我有一个数组,如下所示:
array(1) { [0]=> array(1) { ["type"]=> string(4) "item" } }
我在 if 语句中使用以下代码来查看数组中是否存在"item",但它没有被评估为 true
if (array_key_exists('item', $_SESSION['type']))
{
//do something
}
我做错了什么?
array_key_exists
检查数组的键,而不是值; "item"
是一个值。
要检查值是否存在,请使用in_array
(如果您不关心键,以防找到该项)或array_search
(如果您想知道该项的键是什么)。例如:
if (in_array("item", $_SESSION['type'])) // do something
数组中的数组。函数array_key_exists
仅检查一个级别深度(如果密钥存在)。而且你的 ked 有 2 层深,所以它不能返回 true,因为只有键"0"。
而"item"不是键,而是值;你必须使用函数in_array
或array_search
。
而且你应该为此创建自己的函数,因为它的数组在数组中......
您需要使用 in_array
来查找数组中是否存在元素。
array_key_exists
检查数组的键是否存在