3

解決策を見つけることができなかったかなり単純な問題があります。配列に mySQL 列の内容を入力したいと思います。

基本的に、結果セットを収集するループがあり、この結果セットから特定の列を取得して配列に入れる必要があります。

    foreach ($results as $row){

      $names = array();

      $names[] = $row['name'];

    };

結果セットに 40 個の名前があったとします。これらはすべて $names 配列にあるはずですが、内容を画面に出力しようとすると最後の結果しか得られません。

    echo $names[0]; or print_r($names);

私も試しました:

    while($row = mysql_fetch_array($results)) {

       $names[] = $row['name']; 

    }

ただし、私はすでに foreach のセットアップと作業を行っているため、配列を作成するためだけに別のループを導入したくありません。

次のように配置することで、各名前の値を直接エコーアウトできるため、クエリとループの両方が機能していることがわかります。

    echo $row['name'] 

ループ内で、結果の名前が画面に表示されるのを確認します。

4

4 に答える 4

5

試す

$names = array();
foreach ($results as $row){
      $names[] = $row['name'];
}

$names追加したアイテムを削除する各ループで空の配列に再宣言していました。

于 2012-05-08T20:38:00.977 に答える
3
$names = array();
foreach ($results as $row){
    $names[] = $row['name'];
};

あなたの問題は$names = array();、結果セットをループするたびに新しい配列を宣言することでした

于 2012-05-08T20:39:28.410 に答える
3

ループ内で初期化することにより、配列値を毎回オーバーライドしています。以下が機能します。

$names = array(); //Outside
foreach ($results as $row){
      $names[] = $row['name'];
}

それ以外の場合は、最初の反復をプッシュし、次の反復でそれをクリアすることを何度も繰り返しています。

于 2012-05-08T20:39:47.420 に答える
0

ループ内で変数を宣言していて、それを不可能な範囲で使用したい。PHP変数のスコープについて読んでください。

于 2012-05-08T20:40:43.847 に答える