[PHP-users 28822] Re: 配列処理について

GUSTAV beatle @ nava21.ne.jp
2006年 3月 26日 (日) 02:48:19 JST


GUSTAV です。

言葉足らずだったかもですね。

while(★){☆}

でループさせた場合、★がTRUEでないと☆の処理が
実行されませんし、ループもそこで停止します。

厳密には $x[0] == 0 の場合 current($x) は FALSE ではなく
あくまで 0 を返すと思いますが、
while() の条件式に書いた場合 0 や 空の文字列は FALSE と同じ意味に
扱われますのでそこで止まってしまうという意味です。

値を順番に取り出したいなら foreach() を使うか、

while(list($key, $value) = each($x))
{
	print(current($x))."\n";
}

とかにするべきですね。>domoさん
それらの場合は next() 処理はいらないわけですが・・・。


On 2006/03/26, at 2:09, Shu Sawada wrote:

>
> さわだです。
>
> 回答かぶっちゃったんですが、すみませんついでにちょっと教えて下さい。
> 読み直してみたら、疑問になった部分です。
>
>> current() だと値が 0 の場合 FALSE が返るので当然止まりますね。
>> マニュアルにはちゃんと「そういう場合は each() を使ってね」
>> と書いてありますよ (^_^)b
>
> $xの値が0の場合、FALSEではなく0が帰っているような気がするのですが、
> 気のせいでしょうか。
>
> <?php
>         $x[0] = 0;
>
>         print current($x) . "\n";
>         print next($y) . "\n";
>         print (current($y) === FALSE ? 1 : 0) . "\n";
> ?>
>
> みたいなことをすると、
> 0
>
> 1
> という結果を得ます。
>
> 「配列中に空の要素(0または空の文字列"")がある場合」って、どういう
> 場合なんでしょうか?普段foreachなので、全然気にしたこと無かったです。
>
> #何か根本的に考え方間違ってるでしょうか…?
>
> -- 
> Shu Sawada
> http://luna.lunanet.gr.jp/
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>
>



PHP-users メーリングリストの案内