ホームページ >バックエンド開発 >PHPチュートリアル >foreach が配列要素の最初の文字を出力するのはなぜですか?

foreach が配列要素の最初の文字を出力するのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 13:13:441441ブラウズ

$sql=mysql_query("select b.userid,b.username,b.card_no,b.buytime,b.commission1,m.level from buybak b left joinmember m on b.userid=m.userid where m.agentid ='".$user[userid]."' and b.status1>=0 " );
$array = @mysql_fetch_array($level1_orders);
foreach ($array as $rows) {
echo $rows.'< ;br>';//2 つの配列の情報を出力するループ
echo $rows['userid'].'
';//これは、各要素の最初の文字 (たとえば、ユーザー名が test の場合、t が出力されます。これはどうなっているでしょうか?
}


whileを使うと普通に出力できるのですが、foreachを使って出力する方法が知りたいです


ディスカッションに返信(解決策)

$array = @my sql_fetch _array($ level1_orders);
print_r ($array) // それが何かを見る

$array = @mysql_fetch_array($level1_orders); // それが何かを見る


print_r($array);は 1 つの配列のみを出力しますが、 は 2 つの 2 次元配列をループします。2 つは正しいです。 foreach は添字
Array
(
[0] => 3
[userid] => 3
[1] => test3
[username] => test3
[2] => VIP
[カード番号] => VIP
[3] => 2016-02-16 14:53:33
[4] => 1":5,"2":8,"3":10,"4":12}
[commission1] => {"1":5,"2":8,"3":10 ," 4":12}
[5] => 1
[level] => 1
)

while ループはどのようなものですか? 出力を印刷して確認してください

次に、上記の foreach トラバーサルはトラバーサルですこれは 2 次元配列ですが、$array は明らかに 1 次元配列です。

$array = @mysql_fetch_array($level1_orders);

print_r($array); // それが何であるかを見てみましょう



これは while ループからのもので、これは正しいです。 Array

[0] =&gt;] =&gt; 3
。=&gt;test3
; 2016-02-16 14:53:33
&gt; 2016-02-16 14:53:33 ] => {"1":5,"2":8,"3":10,"4":12}
[手数料1] => {"1":5,"2":8," 3 ":10、" 4 ":12}&gt; [userId] =&gt; 8
TEST8&gt; test8 ,"3":10,"4":12}
1 次元の配列を返します
したがって、私の実行には while ループを使用する必要がありますsql_fetch_array を使用してすべての結果を読み取ります

1 次元配列を走査するには、ループを 1 つ使用する必要があります。2 つ使用すると間違いです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。