Teilstrng in Arry finden
Sahra
- php
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
Ich dachte da eher an str_replace()
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
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
Hi Daniel,
nicht ersetzen sodern löschen.
Cu Sahra
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
Hi,
ich hatte mir schon sowas ähnliches gedacht.
Vielen Dank euch allen
Cu
Sahra
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";
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
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...