在PHP中匹配多维数组的值

时间:2018-03-02 11:47:09

标签: php

我有一个多维数组。

第一个阵列:

$product_array = array(
    [0] => array(
            [product_id] => 1
         ),
    [1] => array(
            [product_id] => 2
         ),
   [2] => array(
            [product_id] => 3
         ) 
);

第二阵列:

$product_id = array(
          '1',
          '3'
     );

如果发现$product_array时间返回product_id的结果,我希望将product_id的所有数据与$product_array键匹配。

预期产出:

 array(
        [0] => array(
                [product_id] => 1
             ),
       [2] => array(
                [product_id] => 3
             ) 
    );

只想使用一个foreach循环。

有可能吗?

3 个答案:

答案 0 :(得分:2)

您可以使用array_filter()

$matching_array = array_filter($product_array,function($val) use($product_id){
    return in_array($val['product_id'],$product_id);
});
print_r($matching_array);

输出

Array
(
 [0] => Array
     (
         [product_id] => 1
     )

 [2] => Array
     (
         [product_id] => 3
     )
 )

答案 1 :(得分:0)

根本不需要循环。
使用array_intersect和array_filter。

strings.xml

https://3v4l.org/sLXsu

答案 2 :(得分:0)

最简单,最快捷的解决方案是,根据需要使用foreach

foreach( $product_array as $key => $value ){
    $prid = $value['product_id'];
    if( !in_array( $prid , $product_id ) ) unset( $product_array[$key] );
}