这个问题已经在这里有了答案: > php check if array contains all array values from another array 5个
我有一个要与另一个数组匹配的数组,第一个数组内的所有值都必须在第二个数组内,因此,如果第二个数组长度小于第一个数组长度,它将自动变为false.例如:
$products = array("soap","milk","book");
$availableProducts = array("soap","tea","oil","milk","book");
$this->matchArray($products,$availableProducts); //return true because all $products value inside $availableProducts value too
$products = array("soap","milk","book");
$availableProducts = array("milk","tea","book","soap","oil");
$this->matchArray($products,$availableProducts); //return true because all $products value inside $availableProducts value too
$products = array("soap","milk","book");
$availableProducts = array("soap","tea","oil","salt","paper");
$this->matchArray($products,$availableProducts); //return false because only one of $products value inside $availableProducts value
$products = array("soap","milk","book");
$availableProducts = array("milk","book");
$this->matchArray($products,$availableProducts); //return false because only two of $products value inside $availableProducts value
解决方法:
array_diff — Computes the difference of arrays
Compares array1 against one or more other arrays and returns the
values in array1 that are not present in any of the other arrays.
$products = array("soap","milk","book");
$availableProducts = array("soap","tea","oil","milk","book");
$difference = array_diff($products,$availableProducts);
if(count($difference)==0){
echo "all products availabale";
}else{
echo implode(',',$difference) ." are not available";
}
输出:-
标签:arrays,php
来源: https://codeday.me/bug/20191109/2011569.html