Array Diff,将1d数组与2d数组的第二维进行比较

时间:2014-08-02 00:20:26

标签: php arrays

array_diff( $files, $data[ ][0] ) 

是否可以仅通过存储在[0]位置内的值进行比较并迭代空[]?


我的问题是我的$data数组是一个二维数组,而$files是一个数组。 Y的{​​{1}}坐标包含$data的{​​{1}}坐标。

这基本上就是我正在寻找的

X

如果这是不可能的使用预先制作的$files函数来实现,那么解决此问题的最佳方法是什么?我真的不希望// How I need array_diff to compare them. $files[0] -> $data[0][0] $files[1] -> $data[1][0] // Y is constantly position 0, while both X's remain at the same position. 成为二维数组,我只需要将Y坐标值设置为x坐标值并摆脱数组的额外维度。

1 个答案:

答案 0 :(得分:1)

我不确定这是不是你的意思,但你可以试试这个。

$diffs = array_diff($files, array_map(function($a){ return $a[0]; }, $data));

另一种方式可能是:

$diffs = array();
foreach ($files as $key => $value) {
    if ($data[$key][0] != $value) {
        $diff[] = $files[$key]; // if you want to check the value of the files variable
        $diff[] = $data[$key][0]; // for the data variable
    }
}

我不知道性能上的差异,但后者仅适用于$files[$n] == $data[$n][0]因此如果我不得不猜测后者的性能会更快。