PHPで配列を扱う

こんばんは。きわさです。

PHPの配列を扱う関数のメモ

次のような配列があったとします。

$array = [
    ["A", "apple", 100],
    ["B", "orange", 20],
    ["C", "apple", 30],
];

指定したカラムを取得 : array_column

たとえば $array から [“A”, “B”, “C”] のような配列を取得したい場合は、array_columnが使えます。

$array1 = array_column($array, 0);

$array1を見てみます。指定したカラム(0)の配列になっています。

array(3) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "C"
}

指定した値のキーを取得 : array_search

$array から、値が orange である要素のキーを取得したい場合は次のように取得できます。

$key = array_search("orange", array_column($array, 1));

前項の array_column との合わせ技で、まずカラム1の配列を取得し、そこから値が orange である要素のキーを取得しています。

配列の要素をフィルタリング: array_filter

次は、$array からカラム1の値が apple の要素のみの配列を取得します。

$array2 = array_filter($array, function($value){
    return $value[1] == "apple";
});

array_filter は引数1の配列の要素を順に引数2に渡し、結果が true の要素のみの配列を返します。
この例では、カラム1が apple の場合に true になります。
また、取得した配列は、キーを保っています。$array2を見てみると[1]がありません。

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "A"
    [1]=>
    string(5) "apple"
    [2]=>
    int(100)
  }
  [2]=>
  array(3) {
    [0]=>
    string(1) "C"
    [1]=>
    string(5) "apple"
    [2]=>
    int(30)
  }
}

配列のすべての値を取得 : array_values

前項のように、キーを保持したままだと困る場合もあります。
そんなときは array_values で詰めることができます。

$array3 = array_values($array2);

$array3を見てみます。キーがつめられています。

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "A"
    [1]=>
    string(5) "apple"
    [2]=>
    int(100)
  }
  [1]=>
  array(3) {
    [0]=>
    string(1) "C"
    [1]=>
    string(5) "apple"
    [2]=>
    int(30)
  }
}

配列をマージ : array_merge

複数の配列をマージしてみます。
先ほどの[1]が抜けた配列 $array2 に対して、もとの配列 $array をマージしてみます。

$array4 = array_merge($array2, $array);

$array4を見てみます。キーはつめられるようです。

array(5) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "A"
    [1]=>
    string(5) "apple"
    [2]=>
    int(100)
  }
  [1]=>
  array(3) {
    [0]=>
    string(1) "C"
    [1]=>
    string(5) "apple"
    [2]=>
    int(30)
  }
  [2]=>
  array(3) {
    [0]=>
    string(1) "A"
    [1]=>
    string(5) "apple"
    [2]=>
    int(100)
  }
  [3]=>
  array(3) {
    [0]=>
    string(1) "B"
    [1]=>
    string(6) "orange"
    [2]=>
    int(20)
  }
  [4]=>
  array(3) {
    [0]=>
    string(1) "C"
    [1]=>
    string(5) "apple"
    [2]=>
    int(30)
  }
}

スポンサーリンク