2017-04-13 17 views
1

のためのような文字列でForeachループを使用することはできませんので、私は、文字列をundrestand charachtersの配列であるので、我々はは、なぜ我々はループ

0 -> a 
1 -> b 
2 -> c 

になり、この

$str = 'abc'; 
for ($i = 0; $i < strlen($str); $i++){ 
    echo "$i -> $str[$i] <br /> "; 
} 

ような何かを行うことができますforeachループでこのプロセスを実行できないのはなぜですか?

$str = 'abc'; 
foreach($str as $k=>$v) 
    echo "$k -> $v <br /> "; 

結果は

Warning: Invalid argument supplied for foreach() 

これは、実用的な問題ではないイムは、文字列でのforeachを使用しようとしていないと私はちょうど理論的な質問

+0

の可能性のある重複[PHP - 文字列の文字に反復](http://stackoverflow.com/questions/4601032/php-iterate-on-string-characters) –

+0

@KrisRoofeの嘆願は太字セクションを読ん – max

+1

これらの単語が新たに追加されました。 –

答えて

3

foreachの配列(またはオブジェクト)を必要とするが、文字列は "真" の配列ではありません。配列のようにcharにアクセスできるのはちょっとしたヘルプ機能です。

foreach(str_split($str) as $k=>$v)

+0

str_split - 文字列を配列に変換します。http://php.net/manual/en/function.str-split.php必要な配列を探します。 –

+0

あなたが書いているように、foreach配列が必要です。ですから、私は文字列配列から作成し、foreachを作成します。 –

+0

質問はforeachループを使用できない理由です。foreachループをstringに使用する方法ではありません。 –

1
str_splitのような別の代替ソリューションを必要といけないだろう

Foreachループは配列に対してのみ機能します。

foreach構造体は、配列を繰り返し処理する簡単な方法を提供します。 foreachは配列とオブジェクトに対してのみ機能し、別のデータ型または初期化されていない変数を持つ変数で使用しようとするとエラーが発生します。そこの2つの構文です:

foreach (array_expression as $value) 
    statement 
foreach (array_expression as $key => $value) 
    statement 

More Information....