0

我有一个数组,如下所示:

array(1) { [0]=> array(1) { ["type"]=> string(4) "item" } } 

我在 if 语句中使用以下代码来查看数组中是否存在“item”,但它没有被评估为 true

if (array_key_exists('item', $_SESSION['type'])) 

    {
       //do something
    }

我究竟做错了什么?

4

3 回答 3

2

它的数组中的数组。如果密钥存在,函数array_key_exists只检查一层。而你的 ked 是 2 级深,所以它不能返回 true,因为只有“0”键。

而“item”不是key,而是value;你必须使用函数in_arrayarray_search.

而且你应该为此创建自己的函数,因为它的数组在数组中......

于 2013-10-23T11:06:58.853 回答
1

array_key_exists检查数组的键,而不是值;"item"是一个值。

要检查值的存在,请使用in_array(如果您不关心找到该项目的密钥)或array_search(如果您想知道该项目的密钥是什么)。例如:

if (in_array("item", $_SESSION['type'])) // do something
于 2013-10-23T11:06:40.517 回答
1

您需要使用in_array来查找数组中是否存在元素。

array_key_exists检查数组的键是否存在

于 2013-10-23T11:07:15.577 回答