PHP
Mehrere Arrays gemeinsam bearbeiten
Suche…
Arrays zusammenführen oder verketten
$fruit1 = ['apples', 'pears'];
$fruit2 = ['bananas', 'oranges'];
$all_of_fruits = array_merge($fruit1, $fruit2);
// now value of $all_of_fruits is [0 => 'apples', 1 => 'pears', 2 => 'bananas', 3 => 'oranges']
Beachten Sie, dass array_merge
numerische Indizes ändert, aber String-Indizes überschreibt
$fruit1 = ['one' => 'apples', 'two' => 'pears'];
$fruit2 = ['one' => 'bananas', 'two' => 'oranges'];
$all_of_fruits = array_merge($fruit1, $fruit2);
// now value of $all_of_fruits is ['one' => 'bananas', 'two' => 'oranges']
array_merge
überschreibt die Werte des ersten Arrays mit den Werten des zweiten Arrays, wenn der Index nicht neu nummeriert werden kann.
Sie können den Operator +
, um zwei Arrays so zusammenzuführen, dass die Werte des ersten Arrays niemals überschrieben werden. Numerische Indizes werden jedoch nicht neu nummeriert. Sie verlieren also Werte von Arrays, deren Index auch im ersten Array verwendet wird .
$fruit1 = ['one' => 'apples', 'two' => 'pears'];
$fruit2 = ['one' => 'bananas', 'two' => 'oranges'];
$all_of_fruits = $fruit1 + $fruit2;
// now value of $all_of_fruits is ['one' => 'apples', 'two' => 'pears']
$fruit1 = ['apples', 'pears'];
$fruit2 = ['bananas', 'oranges'];
$all_of_fruits = $fruit1 + $fruit2;
// now value of $all_of_fruits is [0 => 'apples', 1 => 'pears']
Array-Kreuzung
Die Funktion array_intersect
gibt ein Array von Werten zurück, die in allen Arrays vorhanden sind, die an diese Funktion übergeben wurden.
$array_one = ['one', 'two', 'three'];
$array_two = ['two', 'three', 'four'];
$array_three = ['two', 'three'];
$intersect = array_intersect($array_one, $array_two, $array_three);
// $intersect contains ['two', 'three']
Array-Schlüssel bleiben erhalten. Indizes aus den ursprünglichen Arrays sind dies nicht.
array_intersect
überprüft nur die Werte der Arrays. array_intersect_assoc
Funktion array_intersect_assoc
gibt den Schnittpunkt von Arrays mit Schlüsseln zurück.
$array_one = [1 => 'one',2 => 'two',3 => 'three'];
$array_two = [1 => 'one', 2 => 'two', 3 => 'two', 4 => 'three'];
$array_three = [1 => 'one', 2 => 'two'];
$intersect = array_intersect_assoc($array_one, $array_two, $array_three);
// $intersect contains [1 =>'one',2 => 'two']
array_intersect_key
Funktion array_intersect_key
nur die Schnittmenge der Schlüssel. Es werden Schlüssel zurückgegeben, die in allen Arrays vorhanden sind.
$array_one = [1 => 'one',2 => 'two',3 => 'three'];
$array_two = [1 => 'one', 2 => 'two', 3 => 'four'];
$array_three = [1 => 'one', 3 => 'five'];
$intersect = array_intersect_key($array_one, $array_two, $array_three);
// $intersect contains [1 =>'one',3 => 'three']
Kombination von zwei Arrays (Schlüssel von einem, Werte von einem anderen)
Das folgende Beispiel zeigt, wie zwei Arrays zu einem assoziativen Array zusammengefügt werden, wobei die Schlüsselwerte die Elemente des ersten Arrays sind und die Werte aus dem zweiten Array stammen:
$array_one = ['key1', 'key2', 'key3'];
$array_two = ['value1', 'value2', 'value3'];
$array_three = array_combine($array_one, $array_two);
var_export($array_three);
/*
array (
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
)
*/
Ändern eines mehrdimensionalen Arrays in ein assoziatives Array
Wenn Sie ein mehrdimensionales Array wie folgt haben:
[
['foo', 'bar'],
['fizz', 'buzz'],
]
Und Sie möchten es in ein assoziatives Array wie folgt ändern:
[
'foo' => 'bar',
'fizz' => 'buzz',
]
Sie können diesen Code verwenden:
$multidimensionalArray = [
['foo', 'bar'],
['fizz', 'buzz'],
];
$associativeArrayKeys = array_column($multidimensionalArray, 0);
$associativeArrayValues = array_column($multidimensionalArray, 1);
$associativeArray = array_combine($associativeArrayKeys, $associativeArrayValues);
Oder Sie können die Einstellung $associativeArrayKeys
und $associativeArrayValues
überspringen und diesen einfachen Liner verwenden:
$associativeArray = array_combine(array_column($multidimensionalArray, 0), array_column($multidimensionalArray, 1));