0

我正在将数据从我的控制器传递到视图,我的视图中有代码

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它应该起作用吗?我究竟做错了什么?

4

2 回答 2

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 不同的数组。

您正在传递索引xy干草堆。但是在针中,您只是通过array(5,5)array(6,6)等等。

根据doc,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) ) )
于 2013-08-04T21:44:24.723 回答
0

in_array工作正常,只是您正在将没有键的数组与具有xy作为其值的键的数组进行比较。尝试为我们的新数组提供相应的键,然后比较:

if (in_array(array('x' => $map['x'], 'y' => $map['y']), $array)) {
    echo '1';
}
于 2013-08-04T21:55:09.613 回答