/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ] ~ [] ~

PHP:配列

・array_flip(配列)
  配列のキーと値を、総入れ替えします。
$a = array('a'=>1, 'b'=>2); $a = array_flip($a); // array (1 => 'a', 2 => 'b') になる。 var_export($a);
・array_search(値, 配列) 指定した値が、配列にあるかを調べます。 あれば対応するキーを、なければ FALSE を返します。 # 「値」を調べて、「キー」が返る。
$a = array('a'=>1, 'b'=>2); $key = array_search(1, $a); // この場合は 'a' var_dump($key);
見つかったキーが 0 の場合と、 キーが見つからなかった FALSE とを判別するため、 比較は、=== を使いましょう。 ・array_key_exists(キー, 配列) 指定したキーが、配列にあるかを調べます。 あれば TRUE、なければ FALSE を返します。
$a = array('a'=>1, 'b'=>2); $flag = array_key_exists('a', $a); // この場合は TRUE var_dump($flag);
・array_keys(配列) 配列のキーだけを取り出して、新たな配列を生成します。
$a = array('a'=>1, 'b'=>2); $b = array_keys($a); // array('a', 'b') になる var_export($b);
・count 配列の要素数を返します。
$a = array(1, 2, 3, 4); $count = count($a); // 4 var_dump($count); echo '<br>'; $a = array(); $count = count($a); // 0 var_dump($count);
・list キーが数値の配列を引数にして、各値を、 それぞれ指定する変数に代入します。 # 配列の各要素をバラバラにする、ということです。
$a = array('a', 'b', 'c'); list($A, $B, $C) = $a; echo $A .'<br>'; // 'a' echo $B .'<br>'; // 'b' echo $C .'<br>'; // 'c'
・array_merge(配列, 配列 [,配列 ...]) 複数の配列を結合(マージ)します。
$a = array('a'=>1, 'b'=>2); $b = array('c'=>3, 'd'=>4); $c = array_merge($a, $b); var_export($c); // array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4);

配列を結合する方法には、 array_merge と、もうひとつ、+演算子があります。
$a = array('a'=>1, 'b'=>2); $b = array('c'=>3, 'd'=>4); $c = $a + $b; var_export($c); // array('a'=>1, 'b'=>2, 'c'=>3, 'd'=>4);
ほとんど同じですが、 複数の配列間で、キーが重複している場合は、振る舞いが違います。 # 全く同じなら、array_merge は不要なわけですし... よく理解していないとバグの元なので、細かく説明します。 ・array_merge でキーが重複している場合 キーが文字列なら、後の値で、前の値を上書きします。
$a = array('a'=>1, 'b'=>2); $b = array('a'=>3, 'c'=>4); // キー 'a' が重複 $c = array_merge($a, $b); var_export($c); // array('a'=>3, 'b'=>2, 'c'=>4); // 前の 'a'=>1 が捨てられる
キーが数字なら、値は全て並べられ、キーは最初から振り直されます。
$a = array(0=>'a', 1=>'b'); $b = array(0=>'c', 3=>'d'); // キー 0 が重複 $c = array_merge($a, $b); var_export($c); // array(0=>'a', 1=>'b', 2=>'c', 3=>'d'); // 全部残る。キーは振り直し
・+演算子でキーが重複している場合 キーが文字列でも数値でも、前の値が残って、 重複している後ろの値は捨ててしまいます。
$a = array('a'=>1, 'b'=>2); $b = array('a'=>3, 'c'=>4); // キー 'a' が重複 $c = $a + $b; var_export($c); // array('a'=>1, 'b'=>2, 'c'=>4) // 後ろの 'a'=>3 が捨てられる $a = array(0=>'a', 1=>'b'); $b = array(0=>'c', 3=>'d'); // キー 0 が重複 $c = $a + $b; var_export($c); // array(0=>'a', 1=>'b', 3=>'d'); // 後ろの 0=>'c' が捨てられる
このように、微妙に仕様が異なるので、十分注意して使う必要があります。 が、 使いこなせば、 ・デフォルト配列を元に、差分だけを変更した配列を作るとか (by array_merge) ・飛び飛びになった数値キーを 0 から振り直すとか (by array_merge) ・新規のキーだけを自分の配列に取り込むとか (by +演算子) ありがちな処理が簡単に書けます。
/bonvhp/webapp/PHP       [後へ]   [目次へ]   [次へ]