ホームページ  >  記事  >  バックエンド開発  >  これはなぜ配列のすべての内容を一度に出力するのでしょうか?

これはなぜ配列のすべての内容を一度に出力するのでしょうか?

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

データベースに 2 つのユーザー名があります。このクエリを作成した後、それらがすべて一度に配列に挿入されるのはなぜですか? $arr[0] を出力すると、2 つの部分がすべて出力されます。それぞれ配列に見つかったデータをどのように変更すればよいでしょうか?

<?php$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");$stmt=$pdo->prepare("select * from user");$stmt->execute();$res=$stmt->fetchall(PDO::FETCH_ASSOC);foreach($res as $v){  $arr=array();  $arr[]=$v['username'];  echo $arr[0];}?>


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

結果を投稿してください! !

foreach($res as $v){
$arr=array(); // ループを通じて毎回配列が初期化される場合
$arr[]=$v['username'] // 配列は要素は 1 つだけあります
echo $arr[0]; // 配列の唯一の要素を出力します


次のように調整します:
$arr=array();
foreach($res as $v){
$ arr[]=$ v['ユーザー名'];
}
print_r($arr);
試してみましょう

結果を投稿してください! !


echo の結果は wangzhang です
そして私が欲しいのはこの形式です ('wang','zhang')

foreach($res as $v){

$arr=array(); // If配列はループするたびに初期化されます
$arr[]=$v['username']; // 毎回配列内の要素は 1 つだけになります
echo $arr[0]; // の唯一の要素を出力します。配列
}

次のように調整します:
$arr=array();
foreach($res as $v){
$arr[]=$v['username']
}
print_r($arr); ;

試してみてください

結果が変わりました
このように書いて、最初はこのような結果になると思っていました Array ( [0] => wang ) Array ( [1] => zhang ) しかし、なぜこのようになりますかthis Array ( [0] => wang ) Array ([0] => wang [1] => zhang) なぜ 2 つの異なる配列なのでしょうか?私が望む結果は次のようになります Array ([0] => wang [1] => zhang)

foreach($res as $v){
$arr=array(); //Every If各ループで配列を初期化します
$arr[]=$v['username']; // 毎回、配列内の要素は 1 つだけになります
echo $arr[0]; // の唯一の要素を出力します。配列
}

次のように調整します:
$arr=array();
foreach($res as $v){
$arr[]=$v['username']
}
print_r($arr); ;

試してみてください

結果が変わりました
このように書いて、最初はこのような結果になると思っていました Array ( [0] => wang ) Array ( [1] => zhang ) しかし、なぜこのようになりますかthis Array ( [0] => wang ) Array ([0] => wang [1] => zhang) なぜ 2 つの異なる配列なのでしょうか?私が望む結果は次のようになります Array ([0] => wang [1] => zhang)

foreach の最初の反復では $arr=array(); を 1 回実行し、配列を生成します。では、2 回目の反復で $arr=array(); が再度実行され、別の配列が生成され、zhang が挿入されたため、2 つの異なる配列が生成されます。


foreach($res as $v){
$arr=array(); // ループを通じて毎回配列を初期化する場合
$arr[]=$v['username']; //毎回、配列には 1 つの要素しかありません
echo $arr[0] // 配列の唯一の要素を出力します

次のように調整します:
$arr=array(); as $v){
$ arr[]=$v['ユーザー名']
}

試してみましょう

結果が変わりました
こうやって書くと、当初は次のような結果になると思っていました Array ( [0] => wang ) Array ( [1] => zhang ) しかし、なぜこのようになったのですか Array ( [0] = > wang ) Array ([0] => wang [1] => zhang) なぜ 2 つの配列が異なるのでしょうか?私が望む結果は次のようになります Array ([0] => wang [1] => zhang)



foreach の最初の反復では $arr=array(); を 1 回実行し、配列を生成します。では、2 回目の反復で $arr=array(); が再度実行され、別の配列が生成され、zhang が挿入されたため、2 つの異なる配列が生成されます。

それでは、これら 2 つの値を含む配列を取得するにはどうすればよいでしょうか? これは Array ([0] => wang [1] => zhang) の形式です

解決策は、 $arr=array(); を設定することです。 foreach の外側に設定し、外側に $k=0 を設定し、foreach の内側に $arr[$k]=$v['username']; を設定し、foreach の最後に $k++ を設定します

$arr =array( );
$k=0;
$arr[$k]=$v['ユーザー名']

print_r($arr) ;
解決策は、 foreach の外側で $arr=array(); を設定し、次に $k=0 を外側に設定し、 foreach の内側で $arr[$k]=$v['username'] を設定し、次に $k++ を設定します。 foreach の終わり
$arr=array();
foreach($res as $v){

$k++;

print_r($arr);

k を追加する必要はありません。単に print_r($arr); を外側に移動します。

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