我正在从控制器传递数据到视图,我的视图中有代码
foreach ($mapData as $map)
{
echo $map['x'].';'.$map['y'].'<br/>';
}
它打印出类似
的内容5;5
6;6
7;7
现在,我将数据库中的另一个数据作为二维数组传递(我猜) 看起来像这样的东西
Array
(
[0] => Array
(
[x] => 5
[y] => 4
)
[1] => Array
(
[x] => 5
[y] => 5
)
)
我想检查那个数组中是否存在$ map ['x']和$ map ['y']中的任何一个,所以我正在做(不知道其他任何方式,因为我需要在foreach循环中检查这个)
if (in_array(array($map['x'], $map['y']), $array)) {
echo 1;
}
但它不起作用,根据http://php.net/manual/en/function.in-array.php它应该有效吗?我究竟做错了什么?
答案 0 :(得分:1)
Array
(
[0] => Array
(
[x] => 5
[y] => 4
)
[1] => Array
(
[x] => 5
[y] => 5
)
)
应该看起来像
Array
(
[0] => Array
(
[0] => 5
[1] => 4
)
[1] => Array
(
[0] => 5
[1] => 5
)
)
这意味着,$array
(即haystack)不应该是一个索引比neddle不同的数组。
您正在将索引x
和y
作为haystack传递。但在针刺中你只是像array(5,5)
或array(6,6)
那样传递,等等。
根据文档,in_array()
可以比较
in_array( array(5,5), array( array(5,5), array(6,6) ) )
但不是
in_array( array(5,5), array( array('x' =>5, 'y' => 5), array('x' => 6, 'y' => 6) ) )
答案 1 :(得分:0)
in_array
工作正常,只是您将没有键的数组与具有x
和y
的数组作为其值的键进行比较。尝试为我们的新数组提供相应的键,然后然后比较:
if (in_array(array('x' => $map['x'], 'y' => $map['y']), $array)) {
echo '1';
}