PHPの配列の注意

PHPの配列はすべて連想配列

配列の構造

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)

当然valueの型は任意ですが、keyの方は整数文字列のどちらかに限定されています。

keyに何も入れないと

keyは指定しないと勝手に整数をkeyにしてくれます。この値は「keyとした最大の整数 + 1(整数のkeyがなければ0)」となっています。また同じkeyを指定すると、そのvalueは上書きされます

<?php
$arraytest = array(0,1,2, 10 => 3, 4 , 5);
var_dump($arraytest);

array(6) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [10]=>
  int(3)
  [11]=>
  int(4)
  [12]=>
  int(5)
}

keyにいろんな型をぶち込むと

浮動小数点数なら切り捨てで整数に、真偽値なら0,1の整数に型変換され、他の型を入れると無視します。

<?php
$int = 3;
$double = 5.5;
$string = "str";
$bool = TRUE;
$array = array(9,8,7);
$arraytest = array($int => "int", $double => "double", $string => "string",$bool => "bool",$array => "array");
var_dump($arraytest);

array(4) {
  [3]=>
  string(3) "int"
  [5]=>
  string(6) "double"
  ["str"]=>
  string(6) "string"
  [1]=>
  string(4) "bool"
}

数字のみからなる文字列をkeyにすると

文字列が整数型に変換されてkeyになります。

<?php
$arraytest = array(0,0,0,0,0,"100" => "wow","2" => "wow","1a" =>"wow");
var_dump($arraytest);

array(6) {
  [0]=>
  int(0)
  [1]=>
  int(0)
  [2]=>
  string(3) "wow"
  [3]=>
  int(0)
  [4]=>
  int(0)
  [100]=>
  string(3) "wow"
  ["1a"]=>
  string(3) "wow"
}

PHPの配列を用いるときには

  • keyは文字列か整数に!
  • 文字列の場合は数値だけにしない!