web-dev-qa-db-ja.com

MySQL列からPHP配列を作成

mysql_fetch_arrayは、フェッチされた行の配列を提供します。 1列のすべての行の値から配列を生成する最良の方法は何ですか?

編集:たくさんの素晴らしい答え。答えてくれたみんなありがとう!私は、GumboとGStoが提案したものと同様の解決策に行き着きました。 GStoにはポイントが少ないので、GStoに回答ポイントを与えました(小さな男を助けるだけで、個人的なものは何もありません)。

17
Will Peavy

次のように、配列をループして新しい配列を作成できます。

$column = array();

while($row = mysql_fetch_array($info)){
    $column[] = $row[$key];
//Edited - added semicolon at the End of line.1st and 4th(prev) line

}
30
GSto

Mysql拡張機能を使用してこれを行う機能はありません。これを行うことができます。

$result = array();
while ($row = mysql_fetch_array($r, MYSQL_NUM)) {
    $result[] = $row[0];
}

数値的にインデックス付けされた配列の列をフェッチすることは明らかにわずかに高速であり、連想配列形式を持つことには実際の利点はありません。

8
Tom Haigh

whileループを使用してレコードを取得し、配列に保存します。

$array = array();
while ($row = mysql_fetch_array()) {
    $array[] = $row['column-x'];
}
4
Gumbo

結果をループします。

$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_array($result)) {
    array_Push($data, $row["columnyouwant"]);
}
4
Dominic Rodger
$result = mysql_query("SELECT columnname FROM table WHERE x=y");

$columnValues = Array();

while ( $row = mysql_fetch_assoc($result) ) {

  $columnValues[] = $row['columnname'];

}
2
code_burgar
// I'm using this for years and it works very good !! it's easy and logic
$translate = array();

while ($row = mysql_fetch_assoc($result))
  {
      $cullomnkey = $row['translshort']; // is what you want the key to be 
      $translate[$cullomnkey] = $row[$language]; // this is the key and the value in the array 
  }
1

Php-mysqlの代わりに [〜#〜] pdo [〜#〜] を使用すると、PDO :: query()の戻り値はTraversableインターフェースを実装します。 foreach()を使用します(mysql_queryから取得するmysql結果リソースとは異なります)。

foreach( $pdo->query('SELECT x,y,z FROM foo') as $row ) {

そしてこれで十分ではなく、本当に本当に配列が必要な場合(つまりget_class($ x)=== 'Array')、 fetchAll() メソッドがあります。

0
VolkerK