我有两个多维数组..具有相同的数据......会发生什么...一个数组中的值可能在一个多维数组中内部更改..这是我的数组...
$previousA = array();
$previousA["t"] = array("twitter","picasa");
$previousA["d"] = array("youtube","gmail");
$freshA = array();
$freshA["t"] = array("twitter","picasa","gmail");
$freshA["d"] = array("youtube");
在任何时候总值将是四个“twitter”,“picasa”,“youtube”,“gmail”,它们可能从$ previousA["t"]
< => $previousA["d"]
现在我想知道哪些值从$previousA["t"]
更改为$ previousA["d"]
与$ freshA相比
答案 0 :(得分:1)
您可以将数组差异函数array_diff用作:
$from_d_to_t = array_diff($freshA["t"],$previousA["t"]);
$from_t_to_d = array_diff($freshA["d"],$previousA["d"]);
if($from_d_to_t) {
echo "Elements moved from d to t are ".implode(',',$from_d_to_t)."\n";
}
if($from_t_to_d) {
echo "Elements moved from t to d are ".implode(',',$from_t_to_d)."\n";
}
答案 1 :(得分:0)
简单来说,你需要做的就是遍历你的多维数组(假设它是2阶)并使用函数 array_diff 比较子数组。此函数给出了两个数组之间的差异,即数组中的额外记录
答案 2 :(得分:0)
如果您的元素必须位于t
或d
,那么您实际上只需要跟踪t
或d
中的一个。
ex)
$previousT = array('twitter', 'picasa');
$currentT = array('picasa', 'gmail');
then
$d_to_t = array_diff($currentT, $previousT); // 'gmail'
$t_to_d = array_diff($previousT, $currentT); // 'twitter'