LoginSignup
3
6

More than 5 years have passed since last update.

【PHP】配列処理

Posted at

割と使うPHPの配列の結合・追加処理と結果をメモ。

array_merge

  • キーが重複した場合、後の配列の値を返す。
  • キーが数字の場合、振り直す。
$array1 = array('food' => 'yakiniku', 'red', 'blue');
$array2 = array(5 => 'black', 4 => 'white');
$array3 = array('food' => 'sushi', 'yellow');
$result = array_merge($array1, $array2, $array3);
print_r($array1);
print_r($array2);
print_r($array3);
print_r($result);
実行結果
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
)
Array
(
    [5] => black
    [4] => white
)
Array
(
    [food] => sushi
    [0] => yellow
)
Array
(
    [food] => sushi
    [0] => red
    [1] => blue
    [2] => black
    [3] => white
    [4] => yellow
)

array + array

  • キーが重複した場合、前の配列の値を返す。
  • キーが数字の場合でも前の値を返す。
$array1 = array('food' => 'yakiniku', 'red', 'blue');
$array2 = array(5 => 'black', 4 => 'white');
$array3 = array('food' => 'sushi', 'yellow');
$result = $array1 + $array2 + $array3;
print_r($array1);
print_r($array2);
print_r($array3);
print_r($result);
実行結果
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
)
Array
(
    [5] => black
    [4] => white
)
Array
(
    [food] => sushi
    [0] => yellow
)
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
    [5] => black
    [4] => white
)

array_merge_recursive

  • キーが重複した場合、キーの値がひとつにまとめられる。
  • キーが数字の場合、振り直す。
$array1 = array('food' => 'yakiniku', 'red', 'blue');
$array2 = array(5 => 'black', 4 => 'white');
$array3 = array('food' => 'sushi', 'yellow');
$result = array_merge_recursive($array1, $array2, $array3);
print_r($array1);
print_r($array2);
print_r($array3);
print_r($result);
実行結果
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
)
Array
(
    [5] => black
    [4] => white
)
Array
(
    [food] => sushi
    [0] => yellow
)
Array
(
    [food] => Array
        (
            [0] => yakiniku
            [1] => sushi
        )

    [0] => red
    [1] => blue
    [2] => black
    [3] => white
    [4] => yellow
)

array_push

  • 一つ以上の要素を配列の最後に配列として追加する。
  • $array1[] = $array2; と同じ。array_pushの方が遅いらしい。
$array1 = array('food' => 'yakiniku', 'red', 'blue');
$array2 = array(5 => 'black', 4 => 'white');
$array3 = array('food' => 'sushi', 'yellow');
print_r($array1);
print_r($array2);
print_r($array3);
array_push($array1, $array2, $array3);
print_r($array1);
実行結果
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
)
Array
(
    [5] => black
    [4] => white
)
Array
(
    [food] => sushi
    [0] => yellow
)
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
    [2] => Array
        (
            [5] => black
            [4] => white
        )

    [3] => Array
        (
            [food] => sushi
            [0] => yellow
        )

)

Hash::merge(CakePHP)

  • キーが重複した場合、後の配列の値を返す。
  • キーが数字の場合、振り直さない。
$array1 = array('food' => 'yakiniku', 'red', 'blue');
$array2 = array(5 => 'black', 4 => 'white');
$array3 = array('food' => 'sushi', 'yellow');
$result = Hash::merge($array1, $array2);
print_r($array1);
print_r($array2);
print_r($array3);
print_r($result);
実行結果
Array
(
    [food] => yakiniku
    [0] => red
    [1] => blue
)
Array
(
    [5] => black
    [4] => white
)
Array
(
    [food] => sushi
    [0] => yellow
)
Array
(
    [food] => sushi
    [0] => red
    [1] => blue
    [5] => black
    [4] => white
    [2] => yellow
)
3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6