Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较二维和一维数组_Php_Multidimensional Array - Fatal编程技术网

Php 比较二维和一维数组

Php 比较二维和一维数组,php,multidimensional-array,Php,Multidimensional Array,我已经搜索了这个网站,但很难找到如何实现我希望的目标。我正在动态创建下面的数组,然后对其进行排序。现在我已经完成了,我想比较一下二级键[35659]等等。。复制到另一个数组中的值 Array ( [11] => Array ( [35659] => 1 [35735] => 2 ) [199] => Array ( [35659] =&g

我已经搜索了这个网站,但很难找到如何实现我希望的目标。我正在动态创建下面的数组,然后对其进行排序。现在我已经完成了,我想比较一下二级键[35659]等等。。复制到另一个数组中的值

Array
(
    [11] => Array
        (
            [35659] => 1
            [35735] => 2
        )
    [199] => Array
        (
            [35659] => 1
            [35699] => 1
        )
    [118] => Array
        (
            [35659] => 1
        )
)
这是另一个保存产品id的数组

Array
(
    [0] => 35659
    [1] => 35699
    [2] => 35735
)
因此,我试图实现的是,当第二个数组值存在于第一个数组中时,在满足每个productid后打印它们,一旦我想要中断

因此,我期望的结果如下,因为产品id数组中的所有三个值都已满足

   [11] => Array
        (
            [35659] => 1
            [35735] => 2
        )

  [199] => Array
        (
            [35699] => 1
        )

对此,如有任何指导,将不胜感激

遍历第一个数组,如果它在第二个数组中,则添加一个元素,同时计算您添加了多少个元素。如果已经添加了所有元素,请中断迭代

$results = array();
$count = 0;

foreach($array as $key => $subarray) {
    foreach($subarray as $subkey => $subvalue) {
        if(in_array($subkey,$second_array)) {
            $results[$key][$subkey] = $subvalue;
            if(++$count == count($second_array))
                break 2;
        }
    }
}

print_r($results);

太棒了,谢谢。2在“break 2”中做了什么?@user2433317如果没有2,它只会中断内部foreach并移动到外部foreach的下一个迭代。2号断开了外侧的foreach