Hinzufügen mehrerer Elemente zu einem PHP-array in einer foreach-Schleife - gibt es einen schöneren Weg?
Beispielcode
<?php
$items = array(
array(
'forename' => 'Foo',
'surname' => 'Bar'
),
array(
'forename' => 'Bar',
'surname' => 'Foo'
)
);
$arr = array();
$i = 0;
foreach($items as $item){
$arr[$i]['name'] = $item['forename'];
$arr[$i]['surname'] = $item['surname'];
$i++;
}
echo "<pre>".print_r($arr, true)."</pre>";
?>
Ergebnis
Array
(
[0] => Array
(
[name] => Foo
[surname] => Bar
)
[1] => Array
(
[name] => Bar
[surname] => Foo
)
)
Das Ergebnis ist durchaus akzeptabel und der code lesbar ist.
Meine Frage ist: gibt es eine besser /effizienter /schöner Weg, dies zu tun?
InformationsquelleAutor Sam | 2011-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nicht eine riesige Menge, die Sie tun könnten, um code, den Sie loswerden konnte, die die Notwendigkeit haben, eine inkrementelle variable (
$i
) mitforeach($items as $key => $value)
und mit$key
statt$i
.Sie brauchen noch nicht einmal eine variable
$i
wenn Sie die$arr[] = $item ...
syntax.Als ich ' m mehr als ein Element an ein array brauche ich einen gemeinsamen Schlüssel. Mit der Methode, die Sie angegeben würde mir ein komplett eigenes array für
name
undsurname
in $arrstimmt, aber siehe meine Antwort aus dem Kontext, wie es verwendet werden würde.
InformationsquelleAutor Dunhamzzz
Dies ist in Ordnung und es ist nicht wirklich ein besserer Weg, es zu tun. Hier ist eine alternative, die ist wohl mehr oder weniger lesbar:
Beachten Sie, dass diese
name
Schlüssel nachsurname
wenn, was zählt.InformationsquelleAutor Explosion Pills
In der Regel können Sie so etwas wie
array_merge()
, aber da Sie umbenennen Tasten ist nichts einfach. Sie könnten etwas tun wie:Und dann in Ihrer aktuellen
foreach
- Schleife eine zweiteforeach
- Schleife, die durchläuft. Aber für mich ist das nicht besser, es sei denn, Sie tun das gleiche Sache, die viele Male.Eigentlich
array_combine()
helfen könnte, obwohl Sie müssen vorsichtig sein mit zu halten Bestellung:Hinweis: möglicherweise müssen Sie verwenden
array_values($item)
bin ich mir nicht sicher.InformationsquelleAutor Matthew
Können Sie die folgende Art und Weise
überprüfen Sie die out put http://3v4l.org/v2GhH
InformationsquelleAutor sazedul