【问题标题】:why this php code just output a part?为什么这个 php 代码只输出一部分?
【发布时间】:2023-04-08 03:01:01
【问题描述】:
<?php
    $products = array(
        array("name"=>"apple", "count"=>1),
        array("name"=>"google", "count"=>2),
        array("name"=>"ms", "count"=>4)
    );
    echo "one:<br/>";
    for ($i=0; $i < count($products); $i++) {
        foreach ($products[$i] as $key => $value) {
            echo $key."-".$value.",";
        } 
        echo "<br/>";
    }
    echo "<br/>two:<br/>";
    for ($j=0; $j < count($products); $j++) {
        while(list($k, $v) = each($products[$j])){
            echo $k."|".$v.",";
        }
        echo "<br/>";
    }
?>

这段代码只是输出:

one:
name-apple,count-1,
name-google,count-2,
name-ms,count-4,

two:

我想知道为什么这两部分没有输出?

【问题讨论】:

    标签: php list while-loop each


    【解决方案1】:

    因为每个子数组的内部数组指针已经在数组的末尾,而当您尝试使用each() 时,没有什么可以返回。试试这个:

    echo "<br/>two:<br/>";
    for ($j=0; $j < count($products); $j++) {
        reset( $products[$j]);
        while(list($k, $v) = each($products[$j])){
            echo $k."|".$v.",";
        }
        echo "<br/>";
    }
    

    它所做的只是调用reset() 来重置数组指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2022-11-13
      • 2019-11-17
      • 1970-01-01
      相关资源
      最近更新 更多