0

テーブルからデータを取得して「items」という名前の配列に格納し、インデックスを使用してアクセスしようとしています。「未定義のオフセット: 0」というエラーが表示されます。コードのどこが間違っていますか?

$i=0;

while($row = mysql_fetch_array($sqlquery))
{
    $name = $row['name'];

    $items = array();

    $items[$i] = $name;

    $i= $i +1;
}

echo $items[0];
echo $items[1];
4

9 に答える 9

5

$itemsループの外側で定義し、ループの外側で定義し$i = 0、変更しmysql_fetch_assocて試してください。

$i = 0;
$items = array();
while($row = mysql_fetch_assoc($sqlquery)) {
    $name = $row['name'];

    $items[$i] = $name;
    $i++;
}
echo $items[0];
echo $items[1];
于 2013-03-22T12:06:20.483 に答える
4

反復ごとに配列を再作成しています。結果配列 ($itemsコード内) の初期化は、ループの外にある必要があります。例えば:

$items = array();

while($row = mysql_fetch_array($sqlquery, MYSQL_ASSOC))
{

    $name = $row['name'];

    $items[] = $name;
}
echo $items[0];

echo $items[1];

注: mysql_*関数は非推奨です。mysqli_*またはを使用してくださいPDO

于 2013-03-22T12:05:24.263 に答える
2

ループ内で毎回配列を再宣言していますが、これは正しくありません。

$items = array();
while($row = mysql_fetch_assoc($sqlquery))
{
  $items[] = $name = $row['name'];
}
echo $items[0];
echo $items[1];

注:新しいコードでは関数を使用しないでくださいmysql_*。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-03-22T12:05:49.077 に答える
0
  1. $i = 0;while ループの前に追加
  2. while ループの前に追加$items = array();、while ループ内から削除

     $i         = 0;
     $items = array();
     while($row = mysql_fetch_assoc($sqlquery))
    
于 2013-03-22T12:04:11.030 に答える
0

これを使って

while($row = mysql_fetch_array($sqlquery))

{

$name = $row['name'];

$items = array();

$items[] = $name;




}
if(isset($items[0])){

echo $items[0];
}

if(isset($items[1])){
echo $items[1];
}

$i を使用する必要はありません

于 2013-03-22T12:05:17.820 に答える
0

while$items = array()ループから抜け出します。何度も再定義されており、$item[0]失われています。結果の配列の最後の項目のみを取得します。

于 2013-03-22T12:05:56.420 に答える
0

ループ内で変数を宣言しないでください。1 次元配列に追加するだけの場合は、$i をオフのままにしておくことができます。

$items = array();

while($row = mysql_fetch_assoc($sqlquery))
{
    $items[] = $row['name'];
}

print_r($items);
于 2013-03-22T12:06:39.520 に答える