Frage von arnz523, 52

Wie kann ich falsche Zuweisungen im PHP Array entfernen?

Ich habe folgendes Array vorliegen: $meinArray. Wenn ich es mit

print_r ($meinArray);

ausgebe, dann erhalte ich

Array ( [0] => [1] => auto [2] => haus [3] => [4] => yacht )

Da ich dieses Array noch weiter bearbeiten möchte, sollen sämtliche nicht Zuweisungen wie bei [0] und [3] gelöscht werden. Wie kann ich das automatisieren?

$myArray = array_filter($myArray, 'strlen');

hat nichts verändert?

VG und Danke

Antwort
von MonkeyKing, 10

Also das

$array = array(' foo ', 'bar ', ' baz', ' ', '', 'foo bar');
$array = array_filter(array_map('trim', $array));
print_r($array);

habe ich hier gefunden: http://stackoverflow.com/questions/3384058/how-do-you-strip-whitespace-from-an-a...

müsste auch mit newline klappen

Antwort
von sudorc, 15

Das

$myArray = array_filter($myArray, 'strlen');

nichts verändert hat, kann ich mir nicht vorstellen... Die Funktion trennt die Schlüsselpaare mit leerer Value raus. Die Schlüssel der anderen Schlüsselpaare bleiben dabei gleich.

Antwort
von LukasReiner, 21

Hier noch was was funktionieren KÖNNTE:

Entweder du Trimst die Array dass alles was null ist weg ist. 

Oder du kannst auch mit implode was machen. Such dazu einwenig im Internet.

Antwort
von MonkeyKing, 27

nur

$myArray = array_filter($myArray);
Kommentar von arnz523 ,

hat die gleiche Auswirkung (keine) wie mit  'strlen'

Kommentar von mm78pr ,
$myArray = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
);
print_r($myArray);
print_r(array_filter($myArray));

bei mir gibts einen Unterschied , die Keys mit null,false und Leerstring sind im zweiten print_r Aufruf nicht mehr enthalten.

Dann ist anscheinend in deinem Array ein Wert vorhanden der aber nicht im Browserfenster? ausgegeben wird.

Kommentar von arnz523 ,

Dann ist anscheinend in deinem Array ein Wert vorhanden der aber nicht im Browserfenster? ausgegeben wird.

Laut dem json_encode Vorschlag befinden sich mehre \n\n\n\n\n\n an der Stelle. Versuche die gerade mit preg_replace zu löschen. Bis jetzt ist noch keine Lösung in Aussicht

Kommentar von MonkeyKing ,

In dem Fall kommst du vielleicht mit array_map() und trim() weiter

Antwort
von mm78pr, 17

versuchs mal ohne callback, also nur

$myArray = array_filter($myArray);

damit sollten eigentlich alle Schlüssel deren Wert '', null oder false ist rausgefilter werden.

Antwort
von LukasReiner, 36
print_r (json_encode($meinArray));

Oder

print_r (json_decode($meinArray));
Kommentar von LukasReiner ,

Falls es nicht funktioniert sry ist das einzige was mir auf die schnelle einfällt.

Kommentar von arnz523 ,

json_encode  gibt mir für die "fehlerhaften" folgendes aus

{"0":"\n\n\n\n\n\n", ...

also vielleicht kann ic  erst mit json_decode einen filter anwenden  und dann mit json_encode wieder mein ursprüngliche array Form erhalten

Kommentar von LukasReiner ,

ja dass könntest du auch machen probiers mal aus. Habs gerade nicht im Kopf wie das Resultat aussehen könnte.

Antwort
von LeonardM, 10

unset($meinarray[0]);

Keine passende Antwort gefunden?

Fragen Sie die Community