KHN-プログラミングブログ-

PHP 配列操作操作 ①

① array_slice() 配列の一部を切り取る

  $queue = ["a", "b", "c", "d", "e"];

  // 実行
  $result = array_slice($queue, 2);

  // 返り値
  print_r($result);

結果  [0] => c [1] => d [2] => e

ある配列の、先頭から3つ目の要素を開始位置として、
それ以降を切り取る3つ目を開始位置とするには、第2引数に2を指定します。

$arySample = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
$aryOutput = array_slice($arySample, 5, 3, true);
print_r($aryOutput);

結果
[5] => f [6] => g [7] => h

② array_merge () 配列同士を結合する

//array array_merge ( array $配列 [, 追加する配列 $... ] )

$array1 = [1, 2, 3];
$array2 = [10, 20, 30];
$array3 = [100, 200, 300];

//配列を結合する
$array = array_merge($array1, $array2, $array3);

print_r($array);

結果
[0] => 1 [1] => 2 [2] => 3 [3] => 10 [4] => 20 [5] => 30 [6] => 100 [7] => 200 [8] => 300

③ array_merge(); 多次元配列を結合

//array_merge( 配列1, 配列2, ... );
  $array1 = array('Web' => array('HTML', 'CSS', 'jQuery'), 'Num' => array(1821, 5234));
  $array2 = array('London', 'Rio', 'Tokyo', 'Web' => array('Javascript', 'php'), 'Num' => array(1805, 5480));

  /* 配列を結合 */
  echo "<pre>";
  print_r(array_merge_recursive($array1, $array2));
  echo "</pre>";

同じキーがあれば合体してくれる

Array
(
    [Web] => Array
        (
            [0] => HTML
            [1] => CSS
            [2] => jQuery
            [3] => Javascript
            [4] => php
        )

    [Num] => Array
        (
            [0] => 1821
            [1] => 5234
            [2] => 1805
            [3] => 5480
        )

    [0] => London
    [1] => Rio
    [2] => Tokyo
)

④ shuffle() 配列をランダムにシャッフルする。

  $ary = array(3 => 'b', 8 => 'a', 12 => 'c');
  shuffle($ary);
  foreach ($ary as $key => $value) {
    print "キー(\$key) : {$key} 値(\$value) : {$value}<br/>\n";
  }

⑤ sort() 昇順 配列の中身をソートしてくれる

  $money = [100, 50, 20, 4000];

  sort($money);

  var_dump($money);

結果
array(4) { [0]=> int(20) [1]=> int(50) [2]=> int(100) [3]=> int(4000) }

➅ rsort() 降順 配列の中身をソートしてくれる

  $money = [100, 50, 20, 4000];

  rsort($money);

  var_dump($money);

結果
[0]=> int(4000) [1]=> int(100) [2]=> int(50) [3]=> int(20)

⑦ asort() 連想配列valueを昇順 ⇒ もともとのキーは保持される

  $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  asort($fruits);
  foreach ($fruits as $key => $val) {
    echo "$key = $val<br>";
  }

結果
c = apple
b = banana
d = lemon
a = orange

注意点
asort()したものは変数に代入しても整数しか返ってこない
結果を保持できないためそのまま元の変数をforeachしないといけない

⑧ arsort() 連想配列valueを降順 ⇒ もともとのキーは保持される

  $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
  arsort($fruits);
  foreach ($fruits as $key => $val) {
    echo "$key = $val<br>";
  }

結果
a = orange
d = lemon
b = banana
c = apple

注意点
arsort()したものは変数に代入しても整数しか返ってこない
結果を保持できないためそのまま元の変数をforeachしないといけない

⑨ ksort() 連想配列keyを昇順 ⇒ もともとのvalueは保持される

  $a = array('K' => 32, 'D' => 77, 'A' => 8, 'B' => 9);
  print_r($a);

  /* 配列を要素のキーでソート */
  var_dump(ksort($a));
  echo "<br>";
  print_r($a);

結果
Array ( [K] => 32 [D] => 77 [A] => 8 [B] => 9 ) bool(true)
Array ( [A] => 8 [B] => 9 [D] => 77 [K] => 32 )

注意点
変数に代入しても整数しか返ってこない
結果を保持できないためそのまま元の変数をforeachしないといけない

⑩ krsort() 連想配列keyを降順 ⇒ もともとのvalueは保持される

  $a = array('K' => 32, 'D' => 77, 'A' => 8, 'B' => 9);
  print_r($a);
  echo "<br>";
  /* 配列を要素のキーでソート */
  krsort($a);
  print_r($a);

結果
Array ( [K] => 32 [D] => 77 [A] => 8 [B] => 9 )
Array ( [K] => 32 [D] => 77 [B] => 9 [A] => 8 )

注意点
変数に代入しても整数しか返ってこない
結果を保持できないためそのまま元の変数をforeachしないといけない

終わり