7

配列に他の配列の値が含まれているかどうかを PHP で調べる必要があります。

例えば ​​:

$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
if (in_array($search_values, $results))
    echo 'A value was found';

もちろん、上記は実際には機能しません (in_array)。

基本的に、上記の例に基づいて、$results配列にcathourse、またはdogのいずれかがあるかどうかを確認したいと思います。

最初の配列で「foreach」を実行し、次に 2 番目の配列で「in_array」を実行して true を返す必要がありますか? 見つかったら?それとももっと良い方法がありますか?

4

7 に答える 7

16

array_intersect()を使用したい場合があります

$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');

if ( count ( array_intersect($search_values, $results) ) > 0 ) {
    echo 'BINGO';
} else {
    echo 'NO MATCHES';
}
于 2012-08-08T16:39:20.380 に答える
4

array_intersect() は、不必要な交差点全体を返すため、大きな配列では場合によっては遅くなります。複雑さは O(n) になります。

一致するものを 1 つだけ見つけるコード:




     $arr1 = array('cat', 'dog');
        $arr2 = array('cow', 'horse', 'cat');

        // build hash map for one of arrays, O(n) time
        foreach ($arr2 as $v) {
            $arr2t[$v] = $v;
        }
        $arr2 = $arr2t;

        // search for at least one map, worst case O(n) time
        $found = false;
        foreach ($arr1 as $v) {
            if (isset($arr2[$v])) {
                $found = true;
                break;
            }
        }

于 2012-10-24T08:57:38.870 に答える
0

これでうまくいくと思います。私のMAMPセットアップはこのMacにないので、テストできません。

$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
foreach($results as $k => $v){
 if(in_array($v, $search_values){
    $found = $found && true;
  }
}
于 2012-08-08T16:46:12.217 に答える
0

次のコードを使用できます:

$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
if (count(array_intersect($search_values, $results)) > 0 )
    echo 'A value was found';

array_intersect関数を使用します。

これが実際のデモです:

于 2012-08-08T16:46:17.170 に答える
0

in_array を使用する場合、最初の値として文字列である NEEDLE を指定する必要があります。2 番目の値は、チェックする配列です。

2 つの配列を比較する場合は、array_intersect を使用する必要があります。

于 2012-08-08T16:40:46.583 に答える
0

このようなもの:

return !empty(array_intersect($search_values, $result));
于 2012-08-08T16:42:38.100 に答える
0

array_intersectPHP 関数を使用します。

<?php

$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');

$present = array_intersect( $search_values, $results );

if( count( $present ) )
{
    // your code
    echo 'A value was found';
    print_r( $present );
}
于 2012-08-08T16:42:39.847 に答える