从两个多维数组中选择常用数组 - PHP
Posted
技术标签:
【中文标题】从两个多维数组中选择常用数组 - PHP【英文标题】:Select common arrays from two mutidimension arrays - PHP 【发布时间】:2012-11-05 06:54:56 【问题描述】:我的第一个数组是
Array (
[0] => Array
(
[user_id] => 1
[name] => name1
)
[1] => Array
(
[user_id] => 2
[name] => name2
)
)
我的 Secondarray 是
Array (
[0] => Array
(
[user_id] => 2
[name] => name2
)
[1] => Array
(
[user_id] => 3
[name] => name3
)
)
常见的数组是user_id=2的数组如何选择该数组? 我想要这两个数组的交集。
【问题讨论】:
@asprin 当没有公共数组时,仍然显示第一个数组的结果...为什么? php.net/manual/en/function.array-intersect.php ***.com/questions/4704166/… @FrancisMV123 因为这是 array_intersect() 的行为:返回一个数组,其中包含 array1 中的所有值,其值存在于所有参数中。 @Starlays 如果没有通用数组,那么我想要空数组...帮助我。 【参考方案1】:<?php
$array1 = array(
array(
'user_id' => 1,
'name' => 'foo'
),
array(
'user_id' => 2,
'name' => 'foobar'
)
);
$array2 = array(
array(
'user_id' => 2,
'name' => 'foobar'
),
array(
'user_id' => 3,
'name' => 'baz'
)
);
/**
* Return the common sub_array of tow arrays with tow dimensions
*
* @param $arrayA - the first tow dimension array
* @param $arrayB - the second tow dimension array
*
* @return array - an empty array in case the tow arrays don't
* have any common elements, otherwise an tow dimension array
* containing the common elements
*/
function get_common_array($arrayA, $arrayB)
$result = array();
foreach($arrayA as $keyA=>$sub_arrayA)
foreach($sub_arrayA as $metadata=>$data)
if('user_id' === $metadata)
foreach($arrayB as $keyB=>$sub_arrayB)
if(in_array($data, $sub_arrayB))
$result[] = $sub_arrayB;
return $result;
var_dump(get_common_array($array1, $array2));
这是一种解决方法,但如果我考虑改变拖曳数组的几何形状,以便能够使用 PHP 中实现的专用函数,那么这会更快。
【讨论】:
以上是关于从两个多维数组中选择常用数组 - PHP的主要内容,如果未能解决你的问题,请参考以下文章