Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_Arrays - Fatal编程技术网

用PHP实现多维数组及其子数组中的循环

用PHP实现多维数组及其子数组中的循环,php,arrays,Php,Arrays,我有以下数组: $items = array( array( 'name' => 'Item 1', 'desc' => 'Lorem ipsum...', 'rates' => array( 'Yes' => 50, 'No' => 75 ) ), array( 'name' => 'Item 2',

我有以下数组:

$items = array(
    array(
        'name' => 'Item 1',
        'desc' => 'Lorem ipsum...',
        'rates' => array(
            'Yes' => 50,
            'No' => 75
        )
    ),
    array(
        'name' => 'Item 2',
        'desc' => 'Lorem ipsum...',
        'rates' => array(
            'Yes' => 50,
            'No' => 0
        )
    )
);
如何在
费率之间循环

以下是我所尝试的:

foreach ($items as $item) {
    foreach($item['rates'] as $rate => $value){
        echo $rate['rates'];
    }
}
谢谢。

foreach($items作为$item){
foreach ($items as $item) {
    foreach($item['rates'] as $rate => $value){
        echo 'Rate is ' . $rate . '; value is ' . $value . '<br />';
    }
}
foreach($item['rates']为$rate=>$value){ 回显“速率为“.$Rate.”;值为“.$value”。
; } }
将代码更改为

foreach ($items as $item) {
  foreach($item['rates'] as $rate => $value){
    echo $value;echo '<br/>';
 }
}
foreach($items作为$item){
foreach($item['rates']为$rate=>$value){
echo$value;echo“
”; } }
在第二个循环中,
$rate
是键,
$value
具有该键的当前值。

要保留(并继续)您的工作:

foreach ($items as $item) {
  echo "Number of ratings for item: {$item['name']}<br/>";
  foreach($item['rates'] as $rateKey => $rateValue) {
    echo " - {$rateKey}: {$rateValue}<br/>";
  }
}

循环中的循环比循环慢得多,只有当循环的数组变大时,它才会变得明显。因此,您可以采取以下一种方法:

    $items = array(
    array(
        'name' => 'Item 1',
        'desc' => 'Lorem ipsum text',
        'rates' => array(
            'Yes' => 50,
            'No' => 75
        )
    ),
    array(
        'name' => 'Item 2',
        'desc' => 'Lorem ipsum text',
        'rates' => array(
            'Yes' => 50,
            'No' => 0
        )
     )
    );

$rates = array_column($items, 'rates');

foreach($rates as $key => $value) {
    if($value['Yes']) {
         echo " Yes: {$value['Yes']}<br/>";
    }
     echo " No: {$value['No']}<br/><br/>";
}

第一个变量始终是键,因此不能将其用作数组。在第二个循环中,您已经循环了
rates
的值,因此
$rate
将是Yes/No,而$value将是与该键关联的值。虽然这可能会回答问题,但仅代码的答案通常被视为低质量。提供更多关于为什么会提高这个答案质量的描述和上下文。谢谢
    $items = array(
    array(
        'name' => 'Item 1',
        'desc' => 'Lorem ipsum text',
        'rates' => array(
            'Yes' => 50,
            'No' => 75
        )
    ),
    array(
        'name' => 'Item 2',
        'desc' => 'Lorem ipsum text',
        'rates' => array(
            'Yes' => 50,
            'No' => 0
        )
     )
    );

$rates = array_column($items, 'rates');

foreach($rates as $key => $value) {
    if($value['Yes']) {
         echo " Yes: {$value['Yes']}<br/>";
    }
     echo " No: {$value['No']}<br/><br/>";
}
Yes: 50
No: 75

Yes: 50
No: 0