2

$array1のすべてのアイテムが$array2にある場合はtrueを返し、そうでない場合はfalseを返す関数を作成しようとしています。

私がやろうとしていること:

$array1 = ['1', '3', '9', '17'];
$array2 = ['1', '2', '3', '4', '9', '11', '12', '17'];

function checkArray($arr, $arr2) {
    If all elements in $arr are in $arr2 return true
    else return false
}

if (checkArray($array1, $array2) {
    // Function returned true
} else {
    // Function returned false
}

私はこれを行う方法を考えることができません!感謝します。

解決:

function checkArray($needles, $haystack) {
    $x = array_diff($needles, $haystack);
    if (count($x) > 0) {
        return false;
    } else {
        return true;
    }
}
// Returns false because more needles were found than in haystack
checkArray([1,2,3,4,5], [1,2,3]); 
// Returns true because all needles were found in haystack
checkArray([1,2,3], [1,2,3,4,5]);
4

2 に答える 2

2
function checkArray($arr, $arr2) {
    return !count(array_diff($arr, $arr2));
}

array_diff$arr :に存在しないからのすべてのエントリを含む配列を返します$arr2http://php.net/manual/en/function.array-diff.php

于 2013-03-26T21:04:02.357 に答える
1

array_diffがどのように役立つのかよくわかりません。では、違いがあるかどうかは誰が気にしますか?あなたは配列を比較していません、あるいは少なくともそれは私が質問で理解していることではありません。一方の配列にもう一方の配列が含まれているかどうかを知りたいとします。

PHPにはそのための便利な機能があります

function checkArray($arr, $arr2) {
    return (array_intersect($arr, $arr2) == $arr);
}
于 2013-03-26T21:11:36.913 に答える