1

次のような配列があり($vEvents)ます。

Array
(
[0] => Array
    (
        [id] => 1174
        [date] => 120411
        [name] => DR. J 'Souled Out' ~ 9pm (No Cover)
        [pubId] => 44
        [price] => 
    )

[1] => Array
    (
        [id] => 1108
        [date] => 120410
        [name] => Verb presents Open Stage ~ 9pm (No Cover)
        [pubId] => 44
        [price] => 
    )

[2] => Array
    (
        [id] => 1104
        [date] => 120409
        [name] => DR. J 'Souled Out' ~ 9pm (No Cover)
        [pubId] => 44
        [price] => 
    )
[currLimit] => 10
[eventsRemaining] => 4

私はそれを画面にエコーしています:

reset ($vEvents);
foreach ($vEvents as $key => &$value) {
    if ($key != 'currLimit' && $key != 'eventsRemaining'){ //Makes sure it doesn't print out the limiter value
    $m = substr($value['date'],0,2);
    $d = substr($value['date'],2,2);
    $y = '20'.substr($value['date'],4,2);
    echo date("D", mktime(0, 0, 0, $m, $d, $y)).", ".date("M", mktime(0, 0, 0, $m, $d, $y))." ".$d.", ".$y." - ".$value['name'].'<br />';
    }
}

しかし、私の出力では、表示されているすべての配列エントリを取得する代わりに、最初のエントリをスキップし続けます... 出力:

Sat, Dec 04, 2010 - Verb presents Open Stage ~ 9pm (No Cover)
Fri, Dec 04, 2009 - DR. J 'Souled Out' ~ 9pm (No Cover)

ただし、期待される出力は次のようになります。

Sun, Dec 04, 2011 - DR. J 'Souled Out' ~ 9pm (No Cover)
Sat, Dec 04, 2010 - Verb presents Open Stage ~ 9pm (No Cover)
Fri, Dec 04, 2009 - DR. J 'Souled Out' ~ 9pm (No Cover)

キーなどの値を変更しようとしましたnameが、他のすべてが正常に表示され、常に最初のキーがスキップされます。以前にこの問題が発生したことはありません。考え?

: 行をコメントアウトすると、if ($key != 'currLimit' && $key != 'eventsRemaining'){ //Makes sure it doesn't print out the limiter value正常に動作します。最初の要素のキーがゼロであることは関係ありますか? ifしかし、なぜそれが私のチェックに失敗するのでしょうか?

4

2 に答える 2

2

PHP が 0 の値を処理するのは奇妙です... ほとんどの場合、それらを false として扱います。そう、

if ($key != 'currLimit' && $key != 'eventsRemaining')

$key == 0 の場合は false と評価されます。次のように変更します。

if ($key !== 'currLimit' && $key !== 'eventsRemaining')
于 2012-05-21T18:11:14.947 に答える
-3

これは配列であるため、期待される結果が得られる別のタイプのループを使用してみます。

<?php

$length = count( $vEvents );

for( $i = 0; $i < $length; i ++ )
{

$key = $i;
$value = $vEvents[ $i ];

//rest of the loop code here

}
?>
于 2012-05-21T17:47:18.343 に答える