我正在尝试使用数组1 和数组2 创建过滤的数组3 。
ARRAY 1
Array (
[title] => value
[title2] => value2
[title3] => value3
)
ARRAY 2
Array (
[0] => Array ( [id] => 20 [title2] => value2 [otherColumn1] => otherValue1)
[1] => Array ( [id] => 21 [title4] => value4 [otherColumn3] => otherValue3)
)
应用交叉点方法后的所需结果:
ARRAY 3
Array ( [title2] => value2 )
到目前为止,我无法实现结果,因为数组1和2 具有不匹配的结构。我尝试了不同的技术但由于结构差异我无法比较它们。
if (!empty($data1['array2'][0])) {
foreach ($data1['array2'] as $key) {
// $filtered= array_intersect($array1,$key);
// print_r($key);
}
// $filtered= array_intersect($array1,$data1['array2']);// if i use $data1['array2'][0] it filters fine but just one row
// print_r($filtered);
}
非常感谢任何帮助。谢谢。
答案 0 :(得分:3)
鉴于阵列:
$arr = array('title' => 'value', 'title2' => 'value2', 'title3' => 'value3');
$arr2 = array (
0 => array ( 'id' => '20', 'title2' => 'value2', 'otherColumn1' => 'otherValue1'),
1 => array ( 'id' => '21', 'title4' => 'value4', 'otherColumn3' => 'otherValue3'));
您可以使用以下方法获取已过滤的数组:
$merged = call_user_func_array('array_merge', $arr2);
$filtered = array_intersect($arr, $merged);
如果你想根据键相交,你可以改用:
$filtered = array_intersect_key($arr, $merged);
答案 1 :(得分:-1)
您可以通过以下方式消除结构差异
$arr1 = array (
0 => array('title' => 'value', 'title2' => 'value2', 'title3' => 'value3'));
$arr2 = array (
0 => array ( 'id' => '20', 'title2' => 'value2', 'otherColumn1' => 'otherValue1'),
1 => array ( 'id' => '21', 'title4' => 'value4', 'otherColumn3' => 'otherValue3'));