0
<?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:

2つの部分が出力されない理由を知りたいですか?

4

1 に答える 1

2

各サブ配列の内部配列ポインターは既に配列の最後にあり、使用しようとする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()配列ポインターをリセットするために呼び出すだけです。

于 2013-04-16T01:53:10.437 に答える