多维数组差异php

新手上路,请多包涵

我有两个多维数组,我想要不同之处。例如。我在下面采用了二维二维数组

$array1 = Array (
       [a1] => Array  (
          [a_name] => aaaaa
          [a_value] => aaa
     )

       [b1] => Array (
          [b_name] => bbbbb
          [b_value] => bbb
   )
       [c1] => Array (
          [c_name] => ccccc
          [c_value] => ccc
   )

)

$array2 = Array (
 [b1] => Array (
       [b_name]=> zzzzz
     )
)

现在我想要这两个数组的主要区别。我试过 array_diff_key() 但它不适用于多维。

 array_diff_key($array1, $array2)

我想要如下输出

//output
$array1 = Array (
   [a1] => Array  (
      [a_name] => aaaaa
      [a_value] => aaa
 )

   [b1] => Array (
      [b_value] => bbb
)
   [c1] => Array (
      [c_name] => ccccc
      [c_value] => ccc
)

)

如果您认为我的问题是真实的,请接受并回答。谢谢你。

编辑

现在如果第二个数组是

$array2 = Array( [b1] => zzzzz)

结果应该是

$array1 = Array (
   [a1] => Array  (
      [a_name] => aaaaa
      [a_value] => aaa
    )

   [c1] => Array (
      [c_name] => ccccc
      [c_value] => ccc
     )

)

原文由 kcssm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 706
2 个回答

请检查我是否理解正确,然后此代码片段可以帮助您解决问题。我仅针对您指定的问题对其进行了测试。如果你想运行其他测试用例,你可以告诉我调整代码。

 $a1 = array(
    'a1' => array('a_name' => 'aaa', 'a_value' => 'aaaaa'),
    'b1' => array('b_name' => 'bbb', 'b_value' => 'bbbbbb'),
    'c1' => array('c_name' => 'ccc', 'c_value' => 'cccccc')
);

$a2 = array(
    'b1' => array('b_name' => 'zzzzz'),
);

$result = check_diff_multi($a1, $a2);
print '<pre>';
print_r($result);
print '</pre>';

function check_diff_multi($array1, $array2){
    $result = array();
    foreach($array1 as $key => $val) {
         if(isset($array2[$key])){
           if(is_array($val) && $array2[$key]){
               $result[$key] = check_diff_multi($val, $array2[$key]);
           }
       } else {
           $result[$key] = $val;
       }
    }

    return $result;
}

编辑:添加调整代码。

原文由 Zaheer Abbass 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个解决方案啊对我很有帮助我希望可以帮助他们一些东西,无论什么数组都是乱七八糟的。

 function your_array_diff($arraya, $arrayb) {

    foreach ($arraya as $keya => $valuea) {
        if (in_array($valuea, $arrayb)) {
            unset($arraya[$keya]);
        }
    }
    return $arraya;
}

$a1 = Array
    (
    "0" => Array
        (
        "Empresa" => "TMC01",
        "Paga" => "13/01/2015",
        "ID" => "M2",
        "Valor" => "200",
        "Nombre" => "BONI"
    ),

    "1" => Array
        (
        "Empresa" => "TMC01",
        "Paga" => "13/01/2015",
        "ID" => "M1",
        "Valor" => "100",
        "Nombre" => "SUELDO"
    )
);

$b1 = Array
    (
    "0" => Array
        (
        "Empresa" => "TMC01",
        "Paga" => "13/01/2015",
        "ID" => "M1",
        "Valor" => "100",
        "Nombre" => "SUELDO"
    ),
    "1" => Array
        (
        "Empresa" => "TMC01",
        "Paga" => "13/01/2015",
        "ID" => "M2",
        "Valor" => "200",
        "Nombre" => "BONI"
    )
);

$resultado = your_array_diff($a1, $b1);

echo "<pre>";
echo print_r($resultado);
echo "</pre>";

原文由 Jonny Alexander 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏