Double Foreach Array


Double Foreach Array

我有两个数组:

array product_item('1','22','35');
array product_subitems(22 => array('35'=>'1','42'=>'15'), 35 => array('60'=>'10','69'=>'20'))

如何根据我的数组product_items获取数组product_subitems的值?

我试过类似的东西:

foreach($product_keys as $p_key) {
   foreach($product_items as $item_key) {
      echo product_keys[$p_key][$item_key];
   } 
}

但这是一个非常糟糕的代码,不起作用。

我只想根据第一个数组的键从第二个数组中获取数组键和值。

只需循环第一个,并使用每个值从第二个中检索正确的数组。类似这样的东西:

foreach ($product_item as $pi){
    print_r($product_subitems[$pi]);
}

演示1:http://codepad.org/LDZjHjQH

您可以根据需要对此进行修改。例如,你可能想要这样的东西:

foreach ($product_item as $pi){
    echo "Product item " . $pi . ": ";
    if (isset($product_subitems[$pi])) {
        foreach ($product_subitems[$pi] as $spi) {
            echo $spi . " ";
        }
    }    
}

演示2:http://codepad.org/eTe2ga3d

如果我理解正确,您想要的是子数组项中的键,对吗?

因此,基于此,你会想要这样的东西:

foreach($product_items as $i) {
    if(isset($product_subitems[$i])) {
        foreach($product_subitems as $item) {
             foreach($item as $key => $value) {
                 echo "{$key} = {$value} 'n";
             }
        }
    }
}

Example


如果你不关心product_subitems的密钥,那么你可以使用它来获得值:

foreach($product_items as $i) {
    if(isset($product_subitems[$i])) {
        $values = array_values($product_subitems[$i]);
        print_r($values);
    }
}

Example

$product_item = array('1','22','35');   
$product_subitems = array(22 => array('35'=>'1','42'=>'15'), 35 => array('60'=>'10','69'=>'20'));
foreach($product_item as $item)
   if(isset($product_subitems[$item]))
      print_r($product_subitems[$item]);