Ответ 1
вы можете пропустить массив и создать новый, например:
$column = array();
while($row = mysql_fetch_array($info)){
$column[] = $row[$key];
//Edited - added semicolon at the End of line.1st and 4th(prev) line
}
mysql_fetch_array
даст мне массив выделенной строки. Каков наилучший способ генерировать массив из значений всех строк в одном столбце?
Изменить: много замечательных ответов. Спасибо всем, кто ответил! Я закончил тем, что решил решение, подобное тому, что предлагали Gumbo и GSto. Я дал ответы на GSto, потому что у него меньше очков (просто помощь маленькому парню, ничего личного).
вы можете пропустить массив и создать новый, например:
$column = array();
while($row = mysql_fetch_array($info)){
$column[] = $row[$key];
//Edited - added semicolon at the End of line.1st and 4th(prev) line
}
Нет функции для этого, используя расширение mysql, вы можете сделать это:
$result = array();
while ($row = mysql_fetch_array($r, MYSQL_NUM)) {
$result[] = $row[0];
}
По-видимому, немного быстрее получить столбцы в массиве с числовой индексацией, и здесь нет реальной выгоды от наличия формата ассоциативного массива.
Используйте цикл while
, чтобы получить записи и сохранить их в массиве:
$array = array();
while ($row = mysql_fetch_array()) {
$array[] = $row['column-x'];
}
Прокрутите результат:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_array($result)) {
array_push($data, $row["columnyouwant"]);
}
$result = mysql_query("SELECT columnname FROM table WHERE x=y");
$columnValues = Array();
while ( $row = mysql_fetch_assoc($result) ) {
$columnValues[] = $row['columnname'];
}
// I'm using this for years and it works very good !! it 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
}
Если вы используете PDO вместо php-mysql, возвращаемое значение PDO:: query() реализует интерфейс Traversable, что означает вы можете использовать его, например с foreach() (в отличие от результата результата mysql, который вы получаете из mysql_query).
foreach( $pdo->query('SELECT x,y,z FROM foo') as $row ) {
И в случае, если этого недостаточно, и вам действительно нужен действительно массив (т.е. get_class ($ x) === 'Array'), там fetchAll().
$query = mysql_query('SELECT * from yourTable');
function mysql_field_array( $query ) {
$field = mysql_num_fields( $query );
for ( $i = 0; $i < $field; $i++ ) {
$names[] = mysql_field_name( $query, $i );
}
return $names;
}
$fields = mysql_field_array( $query );
$output = implode( ',', $fields ); //outputs the columns names
//echo count( $fields ); //this use if you want count of columns.
$columns = '{\"fields\":\".json_encode($output).\"}';
echo $columns; //for JSON output
вы можете сделать это:
$columns = array();
$i=1;
while( $row = mysql_fetch_array($sql) )
{
$columns [$i]=$row['value'];
$i++;
}
Если вам не нужна другая информация в этой таблице, вы можете запросить только тот столбец, который вам нужен, и все упростит:
$query = mysql_query("SELECT * FROM table WHERE id='$int' LIMIT 1");
$column = array();
$column = mysql_fetch_array($query);