gpt4 book ai didi

php - 为什么数组数组上的 array_diff 返回一个空数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:00 26 4
gpt4 key购买 nike

我有两个数组,var_dump 为其提供以下值:

$array1:

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) "" } }

$数组2:

Artifacts:array(1) { [0]=>  array(3) { [0]=>  string(7) "module1" [1]=>  string(16) "path/to/file.txt" [2]=>  string(0) "" } }

我认为执行 array_diff($array1,$array2) 会给我一个只包含第二个元素的数组。相反,我得到了一个空数组。我尝试切换参数,仍然是一个 empty_array,但这次没有意外。 array_diff 不能用于数组的数组吗?

最佳答案

来自documentation :

Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same.

echo (string) array(); 只为您提供 Array,因此对于 array_diff,您的数组如下所示:

$array1 = array('Array', 'Array');
$array2 = array('Array');

因此,要为您的数组创建差异,您需要这样的东西(假设数组中的每个元素本身都是一个数组):

$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;
}
}

免责声明:这或多或少只是一个草图。

关于php - 为什么数组数组上的 array_diff 返回一个空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com