👀
PHP array_keysで取得したstring型"1"が、integer型の1に変換されていた件
はじめに
タイトルが全てです.
型が変わることによって、動作がうまくいかなった為、こちらにて残しておきます。
key取得の例
$test =
['fruits' => 'Apple', 'sports' => 'Tennis'];
上記はよくある連想配列の例です。
上記のkeyを取得したい場合、
$keys = array_keys($test);
print_r($keys);
// 実行結果
Array
(
[0] => fruits
[1] => sports
)
上記のようにkeyが取得できます。
このkeyは、fruits、sportsという文字列です。
echo gettype($keys[0]);
// 実行結果
string
上記は問題ありません。
本題は下記になります。
本題
$test =
['1' => 'Apple', '2' => 'Tennis'];
キーを文字列の1、2として設定します。
上記のkeyを取得したい場合、
$keys = array_keys($test);
print_r($keys);
// 実行結果
Array
(
[0] => 1
[1] => 2
)
こちらもこのようにkeyが取得できます。
それでは、このkeyの1,2の型は何でしょうか。
調べてみると
echo gettype($keys[0]);
// 実行結果
integer
integer型、つまり整数に変わってしまいます。
1番目のパラメーターとして認識されてしまっております。
さいごに
array_keysに限らず、数値をkeyに取得すると、整数になるということが勉強になりました。
keyを取得して、if文で比較を行う際など、
急に型が変わって不具合が起きる、なんてこともありますので、注意していきたいです。
Discussion