在PHP中检查二维数组的值

5

我有一个像这样的数组:

array(2) { 
          [0]=> array(1) { ["cate_id"]=> string(2) "14" }
          [1]=> array(1) { ["cate_id"]=> string(2) "15" }
         }

如何在不使用for循环的情况下检查数组中是否存在值14?

我尝试了以下代码:

var_dump(in_array('14',$categoriesId));exit;

但它返回 false,我不知道为什么。

你难道也不想使用foreach吗? - Alireza Fallah
1
你不想使用循环的原因是什么? - Nanne
在这段代码中,我只是期望检查值是否存在于数组中,因此需要使用for循环。 - trai bui
任何解决方案(甚至是序列化)都需要循环数组。也许您的解决方案可以将“cate_id”作为索引键?然后,您可以使用array_key_exists($theCateIdYouAreLookingFor,$yourArray)进行检查。在构建此数组时,您必须考虑到这一点。 - Andresch Serj
是的,我们只能使用for循环,对于我这个新手的PHP来说非常抱歉。 - trai bui
2个回答

6
我想知道为什么不需要用for循环。最快的方法是对数组进行序列化,然后使用strpos函数。
$yourarray = array('200','3012','14');
if(strpos(serialize($yourarray),14)!==false)
{
echo "value exists";
}

警告: 不使用循环结构,无法保证数组中值的存在。即使in_array使用了内部循环结构。因此,如注释所示,如果$yourarray变量中有1414,你将得到一个错误的结果。这就是我一开始强调的原因。

如果你需要在数组中查找特定的值,你必须要循环它。


它对我不起作用,我期望检查值是否存在于数组中,所以我不使用for循环。 - trai bui
假设数组是这样的 array(1,1,1,1,1,1 ... ) (15 times),你的答案将返回 true,但是数组中没有 14 - Alireza Fallah
1
问题: 数组(2) { [0]=> 数组(1) { ["cate_id"]=> 字符串(2) "141" } [1]=> 数组(1) { ["cate_id"]=> 字符串(2) "15" } } 如果(strpos(serialize($yourarray),14)!==false),会返回什么? - Shahrokhian
甚至是 array('141414') - Alireza Fallah
1
是的,我们必须使用for循环,对于我这个新手的PHP来说很抱歉。 - trai bui

2

请执行以下操作:

var_dump(in_array("14",array_map('current',$categoriesId))); //returns true

1
in_array确实使用内部循环结构。你的注释“不用循环来做这件事:”是明显错误的。 - Shankar Narayana Damodaran
1
我看到了你更新的答案,很有道理。我也会删除我的答案。祝好运。 - Alireza Fallah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接