0
0

More than 3 years have passed since last update.

【PHP】配列keyの挙動について

Last updated at Posted at 2020-08-20

配列のkeyはint型かstring型の2種類

整数を配列のkeyに指定した場合、int型として扱われるため注意が必要です。

$array1 = [
    '1983' => 'ファミコン',
    '1989' => 'ゲームボーイ',
    '1994' => 'プレイステーション',
];

var_dump(array_keys($array1));

// 実行結果
array(3) {
  [0]=>
  int(1983)
  [1]=>
  int(1989)
  [2]=>
  int(1994)
}

stringで指定していた場合でもkeyにするとint型になる


// keyをstring型で指定しておく
$key1 = (string)'1983';
$key2 = (string)'1989';
$key3 = (string)'1994';

var_dump($key1);
var_dump($key2);
var_dump($key3);

//var_dumpの結果
string(4) "1983"
string(4) "1989"
string(4) "1994"


//stringで指定した変数をkeyにして配列を作成
$array1 = [
    $key1 =>'ファミコン',
    $key2 => 'ゲームボーイ',
    $key3 => 'プレイステーション',
];

// stringで指定していた年数がint型になっている。
var_dump(array_keys($array1));

array(3) {
  [0]=>
  int(1983)
  [1]=>
  int(1989)
  [2]=>
  int(1994)
}

float型、8進数の場合


$array = [
    1.2 => 'foo',
    2.6 => 'bar',
    0332 => 'hoge',
];

var_dump($array);


// 小数点切り捨ての10進数へ変換される
array(3) {
  [1]=>
  string(4) "foo"
  [2]=>
  string(4) "bar"
  [218]=>
  string(4) "hoge"
}

整数にしたくない場合

  • 文字列を連結しておく

    例:「S_01」、「02A」など

  • ハッシュ化しておく

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0