配列の結果が 2 倍になる (mysql_fetch_array)
指定されたコードで、mysql_fetch_array の動作方法が原因で foreach ループで 2 倍のデータが表示されるという問題が発生しました。 。デフォルトでは、結果配列の各要素に数値インデックスと連想インデックスの両方が割り当てられます。この影響は、print_r 出力で確認できます。インデックス (0、1、2 など) とそれに対応するキー (id、部門 ID、名前など) の両方が表示されます。
この問題を解決するには、次のようにします。 mysql_fetch_array 関数呼び出しで必要なインデックスのタイプを指定できます。 2 番目のパラメータとして MYSQL_NUM を渡すと、数値キーのみを含む配列を取得できます。あるいは、MYSQL_ASSOC は連想キーのみを含む配列を返します。
<code class="php">// Get numeric keys only $query_result_array = mysql_fetch_array($query_result, MYSQL_NUM); // Get associative keys only $query_result_array = mysql_fetch_array($query_result, MYSQL_ASSOC);</code>
mysql_fetch_row 関数と mysql_fetch_assoc 関数を使用することもできます。これらの関数は、具体的にはそれぞれ数値配列または連想配列を返します。
<code class="php">// Get numeric keys only $query_result_array = mysql_fetch_row($query_result); // Get associative keys only $query_result_array = mysql_fetch_assoc($query_result);</code>
これらのオプションを利用すると、foreach ループ内のデータの重複を回避し、結果の配列に必要なインデックスと値が確実に含まれるようにすることができます。
以上が「mysql_fetch_array」を使用すると、foreach ループで 2 倍のデータが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。