Frank: Arrays

Hi Ho.
1. Wenn ich ein Array habe ist dann nur der Text, oder die jeweilige Variable darin gespeichert ?
2. Wie kann ich teile aus einem Array entfernen ?

Danke im Vorraus für alle gescheiten antworten.

    1. Wenn ich ein Array habe ist dann nur der Text, oder die jeweilige
      Variable darin gespeichert ?

    hm?! Ich empfehle zu aller erst http://www.php.net/manual/en/language.types.array.php

    1. Wie kann ich teile aus einem Array entfernen ?

    Generell unset($array[$key]);
    Je nach Anwendung auch array_pop(), array_reduce() etc.

      1. Wie kann ich teile aus einem Array entfernen ?

      Generell unset($array[$key]);

      unset($array[$key]); hört sich passend an.
      nur wie funktinoiert das genau ?
      die ausgabe eines arrays ist zb so:

      text1 | Entfernen
      text2 | Entfernen
      text3 | Entfernen
      text4 | Entfernen

      und wenn der user dann zb auf Entfernen hinter text2 klickt, dann lädt die seite neu und es steht nur noch

      text1 | Entfernen
      text3 | Entfernen
      text4 | Entfernen

      da

      wie sieht das script dazu aus ? oder wie sieht der link dann aus ?
      vieleicht so:

      $arr[] = $variable;
      foreach ($arr as $one)
      {
      print .$one." | <a href=datei.php?$key";
      }

      $key = $_GET['key'];
      unset($array[$key]);

      aber ich glaube da bin ich auf dem falschen weg, oder ?

      1. aber ich glaube da bin ich auf dem falschen weg, oder?

        Zumindest konzeptionell. Ich kenne zwar die konkrete Anwendung nicht, es hört sich für mich aber so an, als sollten diese "texts" dauerhaft gespeichert werden. In dem Fall wirst Du auch mit einer korrekten Version Deines Ansatzes auf die Dauer nicht glücklich werden und an dem Abspeichern in einem file oder einer Datenbank nicht vorbeikommen. Bevor ich das allerdings vertiefe, würden mich ein paar ergänzende Angaben zu Deinem Vorhaben interessieren.

        1. na gut:
          also ich habe ein array das ich in einer session mit session_register() nach jedem mal ausführen speichere. ich füge mit <...?id=mein text"> per $_GET['id']; dem array texte hinzu und möchte die auch wieder löschen können mit dem befehl unset[...].

          nur wie der link dazu aussieht weiß ich nicht.

          hhhmmm reicht das ?

          1. also ich habe ein array das ich in einer session [...] speichere.

            Ahja, dann ist also das array auch ohne Übergabe durch das Forumular in jedem script verfügbar. Wenn Du es schon schaffst, Texte dem array hinzuzufügen, dann kann es ja auch nicht so schwer sein, Texte wieder zu löschen.

            <a href="foo.php?delete=3">Lösche Text in $array[3]</a>
            .
            .
            .
            unset($array[$_GET['delete']]);

            1. das geht nicht und ausserdem soll der link in die schleife der ausgabe des arrays. was ich vergessen hatte ist, dass das 2 arrays sind die da ausgegeben werden.

              a1|a2 | Entfernen
              b1|b2 | Entfernen
              c1|c2 | Entfernen

              beim klick auf entfernen bei der array ausgabe b

              sollte nur noch das hier stehen

              a1|a2 | Entfernen
              c1|c2 | Entfernen

              wie kann ich den link in die schleife einbauen ?

              1. das geht nicht

                Das geht schon.

                was ich vergessen hatte ist, dass das 2 arrays sind die da ausgegeben werden.

                Dann müssen eben die entsprechenden Einträge in beiden arrays entfernt werden: unset($array1[$_GET['delete']], $array2[$_GET['delete']]);

                wie kann ich den link in die schleife einbauen ?

                echo '<a href="foo.php?delete='.$i.'">'; innerhalb der Schleife ausführen?!

                1. Nein das geht nicht:

                  hier das script:
                  ---------------

                  <?php
                  session_start();
                  if (isset ($arr_nr))
                  {
                  unset($arr_nr[$_GET['del']]);
                  unset($arr_euro[$_GET['del']]);
                  unset($arr_text[$_GET['del']]);

                  $nr = $_GET['nr'];
                  $euro = $_GET['euro'];
                  $text = $_GET['text'];

                  $arr_nr[] = $nr;
                  $arr_euro[] = $euro;
                  $arr_text[] = $text;

                  $summe = 0;
                  for ($i=0;$i<count($arr_euro); $i++)
                  {
                     $summe+= $arr_euro[$i];
                  }

                  print "<table border="1" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0" width="70%">";
                  print "<tr>";
                  print "<td align="center" width="41">Nr.</td>";
                  print "<td align="center" width="100">Bestell-Nr.</td>";
                  print "<td align="center" width="270">Beschreibung</td>";
                  print "<td align="center">Preis</td>";
                  print "</tr>";

                  for($i=1;$i<count($arr_nr);$i++)
                  {
                  print "<tr>";
                  print "<td align="center">".$i."<a href="karte.php?del=$i">Löschen</a></td>";
                  print "<td align="center">".$arr_nr[$i]."</td>";
                  print "<td align="center">".$arr_text[$i]."</td>";
                  print "<td align="center">".$arr_euro[$i]." € </td>";
                  print "</tr>";
                  }
                  print "<tr>";
                  print "<td align="center"></td>";
                  print "<td align="center"></td>";
                  print "<td align="center"></td>";
                  print "<td align="center"></td>";
                  print "</tr>";
                  print "</table>";

                  print "<table width="70%">";
                  print "<tr>";
                  print "<td align="center" width="412"></td>";
                  print "<td align="center" style="border-style: solid; border-width: 1">".array_sum($arr_euro)." € </td>";
                  print "</tr>";
                  print "</table>";

                  session_register("arr_nr");
                  session_register("arr_euro");
                  session_register("arr_text");
                  }
                  else
                  {
                  print "Ein Fehler ist aufgetreten starten sie die Seite Neu.";
                  }
                  ?>
                  <br>
                  <br>
                  <br>
                  <a href="karte.php?nr=001&euro=4.70&text=Salami Pizza Classic">001</a>
                  <a href="karte.php?nr=002&euro=5.20&text=Hawaii Pizza">002</a>
                  <a href="karte.php?nr=003&euro=1.20&text=Cola">003</a>
                  <br>
                  <br>
                  <br>
                  <a href="start.php">Neu Starten ...</a>

                  ---------------

                  und hier der link, schau es dir mal an.
                  füge mal 3 - 4 pizzen hin und lösche dann mal eine (an der stelle sollte dann schon die ganze zeile weg sein) und wenn man dann noch mal eine pizza hinzufügen will spinnt alles.

                  http://mitglied.lycos.de/djwoelk3/test/zeile/start.php

                  ???

                  1. Nein das geht nicht

                    DAS GEHT, wenn man es korrekt implementiert!

                    for($i=1;$i<count($arr_nr);$i++)

                    Natürlich funktioniert das so nicht, weil die gewohnte Indexreihenfolge durch unset() nicht mehr gegeben ist. Verwende z.B. foreach($arr_nr as $key=>$value).

                    P.S.: 'Michael W.'=='Frank'?

                    1. DAS GEHT, wenn man es korrekt implementiert!

                      for($i=1;$i<count($arr_nr);$i++)

                      Natürlich funktioniert das so nicht, weil die gewohnte Indexreihenfolge durch unset() nicht mehr gegeben ist.

                      wie meinst du das ?

                      Verwende z.B. foreach($arr_nr as $key=>$value).

                      jetzt geht garnix mehr ...
                      der fehler liegt wo anders, oder ?

                      P.S.: 'Michael W.'=='Frank'?

                      Nein, wir arbeitet zusammen am selben projekt.

                      1. Verwende z.B. foreach($arr_nr as $key=>$value).

                        Das ist bestimmt nicht alles was am script angepasst werden muss, wenn es das wirklich sein sollte, denn ich gehe eher von einer fehlerhaften "if else" technik aus.
                        schau dir die seite nochmal an:
                        http://mitglied.lycos.de/djwoelk3/test/zeile/start.php

                        beim eintragen funktioniert alles nur beim löschen bleiben leere zeilen übrig. das soll weg.
                        wie ?

                        Danke

                        1. Das ist bestimmt nicht alles was am script angepasst werden muss

                          _Das_ glaub ich Dir aufs Wort, nur fehlt mir im Moment leider die Muße, Dir korrekten code auf dem Silbertablett zu servieren.