我有两个数组,var_dump为其提供以下值:
$阵列1:
Artifacts:array(2) { [0]=> array(3) { [0]=> string(7) "module1" [1]=> string(16) "path/to/file.txt" [2]=> string(0) "" } [1]=> array(3) { [0]=> string(7) "module2" [1]=> string(17) "path/to/file2.txt" [2]=> string(0) "" } }
Run Code Online (Sandbox Code Playgroud)
$数组2:
Artifacts:array(1) { [0]=> array(3) { [0]=> string(7) "module1" [1]=> string(16) "path/to/file.txt" [2]=> string(0) "" } }
Run Code Online (Sandbox Code Playgroud)
我认为这样做array_diff($array1,$array2)会给我一个只计算第二个元素的数组.相反,我有一个空数组.我尝试切换参数,仍然是一个empty_array,但这一次毫不奇怪.不适array_diff用于数组数组?
从文档:
当且仅当两个元素被认为是相等的
(string) $elem1 === (string) $elem2.用文字表示:当字符串表示相同时.
echo (string) array();给你只是Array,所以array_diff,你的阵列是这样的:
$array1 = array('Array', 'Array');
$array2 = array('Array');
Run Code Online (Sandbox Code Playgroud)
因此,要为数组创建diff,您需要这样的东西(假设数组中的每个元素本身都是一个数组):
$diff = array();
foreach($array1 as $val1) {
$contained = false;
foreach($array2 as $val2) {
if(count(array_diff($val1, $val2)) == 0) {
$contained = true;
break;
}
}
if(!$contained) {
$diff[] = $val1;
}
}
Run Code Online (Sandbox Code Playgroud)
免责声明:这或多或少只是草图.
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |