たとえば、このjsonファイルを取得しました。ここには、ユーザーのテーブルメタデータがあります。
{
"id": {
"index": ["primary", "auto_increment"],
"unsigned": true,
"type": "integer"
},
"nick": {
"index": ["unique"],
"type": "varchar",
"minLength": 4,
"maxLength": 10
},
"pw": {
"type": "varchar",
"minLength": 4,
"maxLength": 10
}
}
フィールドがインデックスであるかどうか、およびそれがどのタイプのインデックスであるかを確認します。
foreach内でこの方法でチェックを行う場合
if (isset($value["index"]) && (in_array("primary", $value["index"]) || in_array("unique", $value["index"]))) {
$arr[] = $key;
}
期待どおり、この結果が得られます
Array
(
[0] => id
[1] => nick
)
しかし、foreach内でこのようにすると
if (in_array("index", $value) && (in_array("primary", $value["index"]) || in_array("unique", $value["index"]))) {
$arr[] = $key;
}
私はこの結果を得る...
Array
(
[0] => id
)
これは少し不気味です。誰かが理由を知っていますか?理解できません。私の意見では、*in_array-sample* はisset-sampleと同じことをしなければなりません