【问题标题】:Check value of two-dimensional array in php在php中检查二维数组的值
【发布时间】:2014-02-13 15:50:48
【问题描述】:

我有一个这样的数组:

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 吗?
  • 你不想使用循环的原因是什么?
  • 它也必须for循环,在这段代码中我只是希望检查值是否存在于数组中。
  • 任何解决方案(甚至序列化)都会循环数组。也许您的解决方案可能是将“cate_id”作为索引键? nyou 可以使用 array_key_exists($theCateIdYouAreLookingFor,$yourArray) 进行检查。当你建立这个数组时,你必须考虑到这一点。
  • 是的,这只是我们必须使用 for 循环的一种方式,对不起我的新 php

标签: php arrays function search multidimensional-array


【解决方案1】:

我想知道为什么您不需要for。那么最快的方法是 serialize 您的数组并执行 strpos

$yourarray = array('200','3012','14');
if(strpos(serialize($yourarray),14)!==false)
{
echo "value exists";
}

Warning : 如果不使用循环结构,则无法保证值存在于数组中。甚至in_array 也使用内部循环结构。因此,正如 cmets 所指出的,如果 1414 变量内有 1414,您将得到误报。这就是为什么我一开始就强调了这一点。

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

【讨论】:

  • 它对我不起作用,我希望检查值是否存在于数组中,所以我不使用 for 循环
  • 假设数组像array(1,1,1,1,1,1 ... ) (15 times),你的答案会返回true,但是数组中没有14
  • 问题:array(2) { [0]=> array(1) { ["cate_id"]=> string(2) "141" } [1]=> array(1) { ["cate_id"]=> string(2) "15" } } if(strpos(serialize($yourarray),14)!==false) 会返回什么?
  • 甚至array('141414')
  • 是的,这只是我们必须使用 for 循环的一种方式,对不起我的新 php
【解决方案2】:

这样做:

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

【讨论】:

  • in_array 确实使用内部循环结构。您的评论 Do this (without loop) : 显然是错误的。
  • 我看到你更新的答案,有道理。我也会删除我的。祝你好运
猜你喜欢
  • 2017-02-10
  • 2017-10-21
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2017-01-19
相关资源
最近更新 更多