多次元配列の展開


「5.5多次元配列の展開」からのメモ。

  • list()を使って配列を通常の変数に展開

list()は関数じゃなくて、PHPの構文です。

<?php
list($first , $second , $third) = array("a" , "b" , "c");

echo "\$second = $second\n";
?>
$second = b
  • array_key_exists()とisset()の違い

配列中にあるキーが存在するかどうかはarray_key_exists()で見るべき。isset()だと値がNULLの場合にfalseになってしまう。

<?php
function s($v)
{
  if($v === 0){ return "0"; }
  if($v === NULL){ return "NULL"; }
  if($v === ""){ return "\"\""; }
  if($v === false){ return "false"; }
  if($v === true){ return "true"; }

  return $v;
}

$hoge = array(0 , NULL , "" , false);
foreach($hoge as $k => $v)
{
  printf("%s\t:array_key_exists = %s\t:isset = %s\n" , s($v) , s(array_key_exists($k , $hoge)) , s(isset($hoge[$k])));
}
?>
0	:array_key_exists = true	:isset = true
NULL	:array_key_exists = true	:isset = false
""	:array_key_exists = true	:isset = true
false	:array_key_exists = true	:isset = true
  • 配列中の特定の部分を削除
<?php
$hoge = array("a" , "b" , "c");
$removed = array_splice($hoge , 1 , 2);
print_r($hoge);
print_r($removed);
?>
Array
(
    [0] => a
)
Array
(
    [0] => b
    [1] => c
)

キーや値を指定して削除するための関数は準備されてるのかな?

  • 配列中に任意の配列を挿入
<?php
$hoge = array("a" , "b" , "c");
$removed = array_splice($hoge , 1 , 0 , array("x" , "y"));
print_r($hoge);
?>
Array
(
    [0] => a
    [1] => x
    [2] => y
    [3] => b
    [4] => c
)