Php 当数组相似时如何返回该数组
我有两个像这样的数组Php 当数组相似时如何返回该数组,php,arrays,Php,Arrays,我有两个像这样的数组 array1 = [ array("A"=> array("0"=>"1", "1"=>"2", "2"=>"3"), "B"=>"1"), array("A"=> array("0"=>"1",
array1 = [ array("A"=> array("0"=>"1",
"1"=>"2",
"2"=>"3"),
"B"=>"1"),
array("A"=> array("0"=>"1",
"1"=>"2"),
"B"=>"2")
];
$array2 = array("A"=> array("0"=>"1",
"1"=>"2"),
"B"=>"2",
"C"=>"POP",
"D"=>null);
现在我尝试比较$array1和$array2。
您将在A和B中看到$array2与$array1相同
这是我的结果,我希望是这样
$result = array("A"=> array("0"=>"1",
"1"=>"2"),
"B"=>"2");
最后我用了phplaravel
我试着用
array_intersect_assoc($array1, $array2);
但是它什么都没有为什么不定义自己的数组\u intersect\u assoc如下: 现在,您可以将其用于:
$array1 = [array("A"=> array("0"=>"1", "1"=>"2", "2"=>"3"), "B"=>"1"), array("A"=> array("0"=>"1", "1"=>"2"), "B"=>"2")];
$array2 = array("A"=> array("0"=>"1", "1"=>"2"), "B"=>"2", "C"=>"POP", "D"=>null);
$res= [];
foreach($array1 as $arr) { // for each sub-array get all the familiar fields
$res = array_merge(array_intersect_assoc_with_arrays($arr, $array2), $res);
}
将生成以下输出:
Array
(
[A] => Array
(
[0] => 1
[1] => 2
)
[B] => 2
)
希望有帮助 这些阵列在任何方面都不相似。与$array2相比,$array1中还有一个额外的嵌套级别。如果我想将$array1与$array2进行比较,是否可能?或者我必须使$array1仅为1d数组?$array1[0]与$array2密切相关$array1[0]与$array2密切相关不是worked@JustCarty你是说$array1[1]这很有帮助,但我不理解你的代码。你能解释更多吗?问题是数组_intersect _assoc只对字符串数组有效,不允许使用子数组-我对它做了一点修改,以支持子数组。在帖子中为我的代码添加注释。如果您还有一些不清楚的行,请发表评论
Array
(
[A] => Array
(
[0] => 1
[1] => 2
)
[B] => 2
)