Sahra: Teilstrng in Arry finden

Hallo,

ich Suche nach einem Teilstring in einem Arry und wenn der gefunden wird dann möchte ich den löschen. Ich dachte dabei an array_search und das ich das immer wieder selber in einer Funktion aufrufe bis halt alle weg sind. Aber da findet sich kein Teilstring, sondern nur ein ganzer String.

Kan mir jemand sagen, wie ich da weiter komme?

Vielen Dank
Eure Sahra

  1. Ich dachte da eher an str_replace()

    http://www.php.net/manual/de/function.str-replace.php

    1. Vielen Dank erstmal,

      aber es soll ja nicht ersetzen sondern das Arrayfeld löschen. Damit dann alle mit dem Teilstring entfernt werden. Bei einem ersetzen sind sie ja immer noch da.

      Bis dann
      Sahra

  2. Hi

    ich Suche nach einem Teilstring in einem Arry und wenn der gefunden
    wird dann möchte ich den löschen. Ich dachte dabei an array_search
    und das ich das immer wieder selber in einer Funktion aufrufe bis
    halt alle weg sind. Aber da findet sich kein Teilstring, sondern nur
    ein ganzer String.

    Ähm, also du hast ein array in dem stehen strings. und in diesen strings möchtest du teilstringslöschen? hab ich das richtig vertanden?

    max = count(array);
    for($z=0; $z<$max; $z++)
    {
      $string = array[$z];
      $string_geändert = str_replace($teilstring, "", $string);
      array[$z] = $string_geändert;
    }

    alles klar?

    MfG

    1. Hi Daniel,

      nicht ersetzen sodern löschen.

      Cu Sahra

      1. Hi,
        na dann musst noch etwas erweitern.

          
        max = count(array);  
        for($z=0; $z<$max; $z++)  
        {  
          $string = array[$z];  
          $string_geändert = str_replace($teilstring, "", $string);  
          if($string<>$string_geändert)  
          {  
          for($i=$z; $i<$max; $i++)  
          {  
            $folgende = $i+1;  
            array[$i] = array[$folgende];  
          }  
          $max--  
          array[$i] = null;  
          }  
        }  
        
        

        oder so ähnlich. zumindest kannst du hier ansetzten.

        MfG

        1. Hi,

          ich hatte mir schon sowas ähnliches gedacht.
          Vielen Dank euch allen
          Cu
          Sahra

        2. echo $begrüßung;

          max = count(array);
          for($z=0; $z<$max; $z++)

          Ein Array unter PHP hat nicht zwingend numerische und/oder fortlaufende Keys. Deswegen ist die Verwendung von foreach hier angebrachter.

          $string = array[$z];
            $string_geändert = str_replace($teilstring, "", $string);
            if($string<>$string_geändert)

          sehr abenteuerlich... :-)

          {
            for($i=$z; $i<$max; $i++)
            {
              $folgende = $i+1;
              array[$i] = array[$folgende];
            }
            $max--

          Diese Konstruktionen zum Neunummerieren des Array-Restes ist auch nicht besser...

          array[$i] = null;

          Damit wird das Element nicht gelöscht. Bei einem count() beispielsweise wird das immer noch mitgezählt. unset() wäre richtig gewesen.

            
            foreach ($array as $key => $value)  
              if (strpos($value, $teilstring) === false)  
                unset($array[$key]);  
          
          

          und wenn dann noch eine Neunummerierung der Indexe gewünscht ist:

            
            $array = array_values($array);  
          
          

          echo "$verabschiedung $name";

          1. Hi,

            foreach ($array as $key => $value)
                if (strpos($value, $teilstring) === false)
                  unset($array[$key]);

            
            > und wenn dann noch eine Neunummerierung der Indexe gewünscht ist:  
            > ~~~php
              
            
            >   $array = array_values($array);  
            > 
            
            

            ja genau, mein ich doch, mein code sollte als denkanstoß dienen und
            nicht 1:1 übernommen werden. hast wohl meinen post nicht sorgfältig
            gelesen. maja, was solls. aber was zur hölle sollen die ===?

            was "unötigen" code angeht hab ich da eine programmierübung im kopf
            aus InfoI wo wir eine modulo funktion programmiert haben. anstatt
            schlicht % zu verwenden. worauf uns dann unser freundlicher prof, der
            uns diese Aufgabe stellte mit der modulo-funktion programmieren
            aufklärte das es das aber schon vorgefertig als % gibt *grml* war aber
            eine nette übung. kann ich jedem nur empfehlen.

            MfG

            1. echo $begrüßung;

              aber was zur hölle sollen die ===?

              Damit wird auch noch auf den richtigen Typ verglichen.

              Beispiel:

              Das Ergebnis von strpos('TestString', 'Test') ist 0, Test ist an der 0. Position in TestString enthalten.
              Das Ergebnis von strpos('TestString', 'bla') ist aber false.

              Ein Vergleich 0 == false wird durch die automatische Typumwandlung zu 0 == 0 oder false == false [1]
              und das entspricht true.

              Bei 0 === false werden die Typen mit berücksichtigt: integer == boolean ergibt false

              echo "$verabschiedung $name";

              [1] Wie 'rum genau, weiß ich nicht. Vielleicht ist der erste Parameter ausschlaggebend...