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));


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow