サーチ…


配列のマージまたは連結

$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']

array_mergeは数値インデックスを変更しますが、文字列インデックスは上書きします

$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は、インデックスの番号を変更できない場合は、最初の配列の値を2番目の配列の値で上書きします。

+演算子を使用すると、最初の配列の値が上書きされないように2つの配列をマージできますが、数値インデックスの番号は変更されないため、最初の配列でも使用されているインデックスを持つ配列の値は失われます。

$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_intersect関数は、この関数に渡されたすべての配列に存在する値の配列を返します。

$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_intersectは、配列の値だけをチェックします。 array_intersect_assoc関数は配列のキーとの交差を返します。

$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関数は、キーの共通部分のみをチェックします。すべての配列にキーが返されます。

$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']

2つの配列(1つのキー、別のものからの値)

次の例は、2つの配列を1つの連想配列にマージする方法を示しています。ここで、キー値は最初の配列の項目になり、値は2番目の配列からのものになります。

$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',
    )
*/

多次元配列を連想配列に変更する

次のような多次元配列がある場合:

[
    ['foo',  'bar'],
    ['fizz', 'buzz'],
]

そして、あなたはこれを以下のような連想配列に変更したい:

[
    'foo'  => 'bar',
    'fizz' => 'buzz',
]

このコードを使用することができます:

$multidimensionalArray = [
    ['foo',  'bar'],
    ['fizz', 'buzz'],
];
$associativeArrayKeys   = array_column($multidimensionalArray, 0);
$associativeArrayValues = array_column($multidimensionalArray, 1);
$associativeArray       = array_combine($associativeArrayKeys, $associativeArrayValues);

あるいは、 $associativeArrayKeys$associativeArrayValues設定をスキップして、この単純なライナーを使用することもできます:

$associativeArray = array_combine(array_column($multidimensionalArray, 0), array_column($multidimensionalArray, 1));


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow