2017-11-17 10 views
-2

私のPHPアプリケーションでは、多次元配列をとり、forループで値を抽出する必要があります。クエリは常に9行を返します。PHPの多次元配列から値にアクセスする

$w = mysqli_query($con,"SELECT age, percent FROM drive03_2_monthly_income WHERE birthYear='1956' AND (age LIKE '%.00%') ORDER BY birthYear,age "); 

$row = mysqli_fetch_array($w); 
    for($n=0;$n<9;$n++) { 
     echo $row[$n]->age." -- ".$row[$n]->percent."<br />"; 
     } 

これを実行すると、$ wで必要なデータが得られますが、ループ内の値を抽出する際に問題があります。

答えて

0

ここにいます。

<?php 
$w = mysqli_query($con,"SELECT age, percent FROM drive03_2_monthly_income WHERE birthYear='1956' AND (age LIKE '%.00%') ORDER BY birthYear,age "); 
while ($row = mysqli_fetch_array($w, MYSQLI_ASSOC)) 
{ 
    echo $row['age']->age." -- ".$row['percent']->percent."<br />"; 
} 
?> 
-1

問題は、mysqli_fetch_array()が1行を取得することです。次のステップにはいくつかの選択肢があります。

オプション1 - ループにおいて使用mysqli_fetch_array()

while($row = mysqli_fetch_array($w)){ 
    // Do something with your associative row data 
    echo $row['age']; 
} 

オプション2 - ループで使用mysqli_fetch_object()

while($row = mysqli_fetch_object($w)){ 
    // Do something with your object row data 
    echo $row->name; 
} 

オプション3 - 使用mysqli_fetch_all()

foreach(mysqli_fetch_all($w, MYSQLI_ASSOC) as $row){ 
    // Do something with your associative row data 
    echo $row['age']; 
} 

これはドキュメントで引用されているように、推奨されません。 mysqli_fetch_all(AS

)単一 ステップで配列としてすべての行を返し、そのようなだけ から一度に1つの行を返す mysqli_fetch_array()、のようないくつかの同様の機能よりも多くのメモリを消費します結果セット。さらに、結果セットを反復処理する必要がある場合は、 にはパフォーマンスにさらに影響するループ構成が必要です。 これらの理由から、mysqli_fetch_all()はフェッチされた結果セットが処理のために別のレイヤー に送られるような状況の でのみ使用してください。