1

一部のデータをループしているときに、奇妙な動作に気付きました。単純なことだと思いますが、バグを見つけることができないようです。私は次のロジックを持っています:

            <?php
            print 'dumping data : <BR>';
            var_dump($portvlan);
            print '<BR>';
            print 'looping through data: <BR>';
                foreach ($portvlan as $vlandetail){
                    echo 'Vlanid: '.$vlandetail['VlanId'].'<BR>';
                    echo 'Name: '.$vlandetail['Name'].'<BR>';
                    echo 'Mode: '.$vlandetail['Mode'].'<BR>';
                }
            ?>

これは私が得ている出力です:

dumping data :
array(3) { ["VlanId"]=> string(2) "33" ["Name"]=> string(6) "USR_33" ["Mode"]=> string(6) "Access" }
looping through data:
Vlanid: 3
Name: 3
Mode: 3
Vlanid: U
Name: U
Mode: U
Vlanid: A
Name: A
Mode: A

私が期待していたのは、33、USR_33、Access の値を持つ 3 つのセルを含む行が表示されることでした。

どこが間違っているのか教えてもらえますか? ありがとう。

編集1

このロジックは、$portvlan 配列に複数のエントリがある場合に正常に機能します。たとえば、別のデータ セットで var_dump を実行すると、次の結果が得られます。

array(6) { [0]=> array(3) { ["VlanId"]=> string(1) "1" ["Name"]=> string(1) "1" ["Mode"]=> string(5) "Trunk" } [1]=> array(3) { ["VlanId"]=> int(2) ["Name"]=> int(2) ["Mode"]=> string(5) "Trunk" } [2]=> array(3) { ["VlanId"]=> int(3) ["Name"]=> int(3) ["Mode"]=> string(5) "Trunk" } [3]=> array(3) { ["VlanId"]=> int(4) ["Name"]=> int(4) ["Mode"]=> string(5) "Trunk" } [4]=> array(3) { ["VlanId"]=> int(5) ["Name"]=> int(5) ["Mode"]=> string(5) "Trunk" } [5]=> array(3) { ["VlanId"]=> string(2) "33" ["Name"]=> string(2) "33" ["Mode"]=> string(5) "Trunk" } } 

そして、ループ ロジックは正常に動作します。

4

2 に答える 2

1

$vlandetailループの反復ごとに、配列から異なるアイテムが取り込まれます。$vlandetail配列として扱うべきではありません。直接使用するだけです。

配列エントリのキー名を取得するには、ループ構造を次のように変更する必要があります。

foreach ($portvlan as $key => $vlandetail) {
     echo $key . ': ' . $vlandetail . '<br>';
}
于 2013-01-23T00:54:27.480 に答える
0

どのように取得します$portvlanか?

$portvlanが の配列ではないことがわかっている場合は、次の$vlandetailように簡単に実行できます。

$portvlan = array($portvlan);
// start loop

または、ループする前にこれを実行して、$portvlanによって形成された数値配列であることを確認できます。$vlandetail

$portvlan = (isset($portvlan[0]))?$portvlan:array($portvlan);
// start loop
于 2013-01-23T01:28:15.123 に答える