PHP Cookbook読書ノート–第04章配列

5159 ワード

配列はweb開発でよく使われる部分なので、この章の内容は比較的重要です.unset():変数(もちろん配列も含まれます)を破棄します.array_pad():指定された長さの空きを値で埋めるarray_splice():配列の要素をこの関数で除去できるほか、また、削除された部分array_merge()を別の配列に置き換えることもできます.複数の配列array_push()をマージします.配列の最後に値array_map()を追加します.配列内の複数の要素is_array()をコールバック関数で処理します.変数が配列タイプであるかどうかを検出します.
array_shift():配列の最初の要素を除去array_pop():配列の最後の要素を返し、元の配列からjoin()を除去します.前の章で説明したように、配列を指定した区切り記号で文字列array_key_exists()に結合します.配列にキー名が含まれているかどうかを問い合せます.in_array():値が配列にあるかどうかを問い合せます(ブール値を返します).
in_arrayの間違いやすいところ
$array = array(1, '2', 'three');



in_array(0, $array);        // true!

in_array(0, $array, true);  // false

in_array(1, $array);        // true

in_array(1, $array, true);  // true

in_array(2, $array);        // true

in_array(2, $array, true);  // false

array_search():配列内で指定された値をクエリーします(値を返すキー名が存在することに注意してください).
array_filter():array_map()と同様に、配列はコールバック関数で処理されますが、関数が返すtrueまたはfalseによって要素を保持するかどうかを決定します.
max():クエリー配列の最大値
min():クエリー配列の最小値
arsort():配列のキーをソートし、キーと値の関係を維持します.
array_reverse():配列逆シーケンス
sort():配列の値をソートすると、元のキー名が変更されます.
asort():配列の値をソートし、キーと値の関係を維持します.
natsort():自然ソートアルゴリズムで配列の値をソートし、1,0,11,2,21があれば結果は0,1,2,11,21である
usort():ユーザーが指定したソート関数を使用して配列をソートします.
array_multisort():複数のグループをソート
shuffle():配列要素の乱れ(使いやすい関数)
array_unique():値を一意化(重複する要素を除去)
array_walk():array_map()と同様に、配列内の各要素をコールバック関数で処理します.array_map()は処理後の結果を返し、array_walk()は処理が成功したかどうかを返します.この違いによりarray_map()は元の配列を変更せず、array_walk()は元の配列を処理することになる.
array_walk_recursive():配列内の各メンバーに対してユーザ関数を再帰的に適用する
foreach文を使用する場合、PHPは配列自体ではなく、対応する配列のコピーを反復します.each()関数とfor文を使用する場合、PHPは元の配列を反復します.
配列を巡る4つの方法:
foreach ($array as $value) {

    // Act on $value

}



foreach ($array as $key => $value) {

    // Act II

}



for ($key = 0, $size = count($array); $key < $size; $key++) {

   // Act III

}



reset($array) // reset internal pointer to beginning of array

while (list($key, $value) = each ($array)) {

    // Final Act

}

配列中の集合の運用
//  

$union = array_unique(array_merge($a, $b));

//  

$intersection = array_intersect($a, $b);

//  

$difference = array_diff($a, $b);

//    

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));