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)

ドキュメントによると、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キーのない配列を、値のキーとしてxandを持つ配列と比較しているだけです。y新しい配列に対応するキーを与えてから比較してみてください

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