我不确定该使用哪个 php 函数..
如何检查一个数组是否具有另一个数组中可用的值?
例如,我有一个文本输入,其中提交了 CSV ---
$str = "green, yellow, blue"
我使用
str_getcsv()
创建字符串数组。然后我想比较数组 1 和数组 2,如下所示
$array2 = array("green", "yellow", "orange", "purple");
我正在比较数组 1 和数组 2 以确保提交的值是允许的。因此,如果数组 1 中的值在数组 2 中不存在,我想返回
false
。我尝试了以下方法,但不起作用。
$array1 = str_getcsv($str); //create array of colors
$array2 = array("green", "yellow", "orange", "purple"); //allowed colors
if (!in_array($array1, $array2)) if value from array1 not in array2
{
return FALSE;
} else {
return TRUE;
}
这比我想象的更复杂吗?
在此处查看 PHP 的 array_diff( ) 函数:http://php.net/manual/en/function.array-diff.php
您可以使用 array_intersect() 获取该数组中设置的值,然后检查结果中是否设置了值。
http://php.net/manual/en/function.array-intersect.php
如果结果中未设置值,您还可以使用 array_diff() 并设置。
您可以使用否定的
array_diff()
检查或从 PHP8.4 array_all()
开始,以提高短路性能。 演示
$str = "green, yellow, blue";
//$str = "purple, orange, green";
$array1 = array_map(trim(...), str_getcsv($str, escape:'')); //create array of colors
$array2 = ["green","yellow","orange","purple"]; //allowed colors
var_export(
array_all($array1, fn($v) => in_array($v, $array2))
);
echo "\n---\n";
var_export(
!array_diff($array1, $array2)
);
输出:
true
---
true