-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Объединить результат mysql_fetch_array() в одну переменную
Всем привет!
Подскажите, пожалуйста, каким образом можно объединить весь результат функции mysql_fetch_array(); в одну переменную?
Обычно я делаю так:
PHP код:
<?
$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");
$rows = mysql_fetch_array($sql);
do{
echo $rows['name'].'<br>';
}
while($rows = mysql_fetch_array($sql));
?>
Выведет, к примеру,
Код:
Alex
AlexMe
Alexander
Но сейчас понадобилось вернуть все данные массива из своей функции и затем только вывести на экран.
Должно получиться что-то вроде такого:
Код:
Alex<br>AlexMe<br>Alexander<br>
|
т.е. рекурсивно склеить элементы массива? см. пример.
|
по умолчанию mysql_fetch_array содержит и числовой и ассоциативный массивы, поэтому при склеивании будут дубли. Чтобы избежать этого, нужно вторым параметром добавить константу MYSQL_ASSOC (чтобы оставить только ассоциативный)... либо юзать mysql_fetch_assoc...
|
То что надо, спасибо большое!
Готовый код, если надо
PHP код:
<?php
function array_implode($arrays, &$target = array()) {
foreach ($arrays as $item) {
if (is_array($item)) {
array_implode($item, $target);
} else {
$target[] = $item;
}
}
return $target;
}
$connect_db = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database', $connect_db);
$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");
$row = mysql_fetch_array($sql);
$return = array();
do
{
$return[count($return)] = $row['name'].'<br>';
}
while($row = mysql_fetch_array($sql));
echo join(' ', array_implode($return));
/*
Выводит:
Alex
AlexMe
Alexander
*/
?>
|
А как вам такой вариант? Все значения пишем в массив, а потом как хотим так и выводим.
PHP код:
<?php
$connect_db = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database', $connect_db);
$sql = mysql_query("SELECT `name` FROM `users` WHERE `name` LIKE 'Alex%' ");
$return = array();
while($row = mysql_fetch_array($sql))
{
$return [$i][0] = $row['name'];
++$i;
};
?>
|
Igor_I, разве можно называть переменную зарезервированным словом return?
|
Извините, :) я особо не раздумывал над переделкой примера. Обычно названия переменных делаю понятными. В данном случае было бы - $name или $sqlname
|
Цитата:
Цитата Coutty
Igor_I, разве можно называть переменную зарезервированным словом return? »
|
не знаю на сколько можно или нельзя - в соответсвие языку, но раобтает без ошибок.
и даже такой вариант: $include, и такой $function ...
|
Sham, это понятно, просто есть слова которые без $ могут что-то обозначать, лучше такие не использовать.
|
Время: 16:41.
© OSzone.net 2001-