12

これに頭を巻くことができません。

配列を作成すると、空の値で始まります。配列に含める必要のある値は、2番目から始まります。

配列:

Array ( 

 [0] => 

 [1] => Value 1 

 [2] => Value 2 

 [3] => Value 3

)

コード:

$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
do{
    array_push($categories, $category['description']);
}while($category=mysql_fetch_assoc($query2));

配列の最初の項目を値1にするにはどうすればよいですか?

4

6 に答える 6

21

これは、do while loop trywhileloopが原因です。

while($category=mysql_fetch_assoc($query2)){
    array_push($categories, $category['description']);
}
于 2012-12-19T12:24:23.580 に答える
14

答えは非常に簡単です。最初の行を読み取る前に、最初の要素をプッシュしています。それを行う正しい方法は、前提条件ループを使用することです。

$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");

while($category=mysql_fetch_assoc($query2)) {
    array_push($categories, $category['description']);
}

また、PDOの使用に切り替えてください。

于 2012-12-19T12:25:26.097 に答える
12

whileループのしくみ

ここに画像の説明を入力してください

通常のwhileループとの主な違いは、do-whileループの最初の反復が実行されることが保証されていることです(真理式は反復の最後にのみチェックされます)が、必ずしも通常のwhileループで実行されるとは限りません(真理式は各反復の開始時にチェックされ、最初からFALSEと評価された場合、ループの実行はすぐに終了します)。ソース

したがって、プログラムでは、最初の行を読み取る前に、最初の要素をプッシュしています。

代わりに使用してください

ワイルループは何をしますか?フローチャートのように、ループ本体の内側に入るよりも最初にチェックするので、最初の行を読み取った後に要素がプッシュされます

$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");

while($category=mysql_fetch_assoc($query2)) {
    array_push($categories, $category['description']);
}

ノート

  1. ext/mysqlプレフィックスmysql_で指定されたすべての関数を提供するPHP拡張機能全体は、PHP v5.5.0で正式に非推奨になり、将来削除される予定です。したがって、PDOまたはMySQLi

よく読んで

  1. mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。
于 2012-12-19T12:30:29.130 に答える
5

do-whileループの代わりにwhileループを使用する必要があるためです。

while($category = mysql_fetch_assoc($query2)) {
    array_push($categories, $category['description']);
}

代わりに、ループの最初の反復(doブロックに初めて入るとき)のコードでは、$categoryが設定されていないため、最初の配列値を空に設定します。

于 2012-12-19T12:24:39.403 に答える
5

最初に値()を配列に書き込み、array_push()次に実際に値(mysql_fetch_assoc())を取得します。

最初に値を取得してから、配列に配置する必要があります。

$categories = array();
$query2 = mysql_query("SELECT * FROM books_categories");
while(($category = mysql_fetch_assoc($query2)) !=== false) {
    array_push($categories, $category['description']);
}
于 2012-12-19T12:25:57.960 に答える
1

代わりにこれを試してください:

$categories = array();
$query2 = mysql_query('SELECT * FROM books_categories');
while($r = mysql_fetch_array($query2)){
    $categories[] = $r['description'];
}
于 2012-12-19T12:25:06.970 に答える