起点
我有一个多维数组,例如以下示例:
$array = array (
'role_1' =>
array (
0 => 'value_2',
1 => 'value_3',
),
'role_2' =>
array (
0 => 'value_1',
1 => 'value_2',
),
'role_3' =>
array (
0 => 'value_2',
1 => 'value_3',
),
)
目标
我想循环遍历子数组,只获取它们的交集。该数组是动态创建的,可能有很多子数组role_[x]
,子数组中也有很多键/值对。键不是必需的,只需要值。键也是计数器,而不是字符串。
结果应该是一个小数组,例如:
$array = array( 'value_2' )
在获取交集后,“数组名称”(如role_1
)的索引已不再重要。对于我来说,结果中重要的是值,即仅存在于每个子数组中的值。
尝试
我已经尝试过原始代码,但我认为可以更简单。
$value_stack = array();
$result = array();
$i = 0;
foreach( $settings_ as $role => $values ) {
foreach( $values as $value ){
if( in_array( $value,$value_stack ) || $i === 0 ) {
$result[ $role ][] = $value;
}
$value_stack[] = $value;
}
$i++;
};
这个多维数组的合并结果应该在循环中使用
array_merge
进行合并。感谢您的时间。
$temp = $array[0]; for ($i = 1; $i < count($array) -1; $i++) { $temp = array_intersect($temp, $array[$i]); }
- Marc BNULL
。 - bueltge