Показать полную графическую версию : [решено] Объединить результат mysql_fetch_array() в одну переменную
D_Master
08-07-2009, 04:14
Всем привет!
Подскажите, пожалуйста, каким образом можно объединить весь результат функции mysql_fetch_array(); в одну переменную?
Обычно я делаю так:
<?
$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>
т.е. рекурсивно склеить элементы массива? см. пример (http://ru.php.net/manual/ru/function.implode.php#84788).
по умолчанию mysql_fetch_array (http://ru.php.net/manual/ru/function.mysql-fetch-array.php) содержит и числовой и ассоциативный массивы, поэтому при склеивании будут дубли. Чтобы избежать этого, нужно вторым параметром добавить константу MYSQL_ASSOC (чтобы оставить только ассоциативный)... либо юзать mysql_fetch_assoc (http://ru.php.net/manual/ru/function.mysql-fetch-assoc.php)...
D_Master
08-07-2009, 04:57
см. пример. »
То что надо, спасибо большое!
<?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
$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
Igor_I, разве можно называть переменную зарезервированным словом return? »
не знаю на сколько можно или нельзя - в соответсвие языку, но раобтает без ошибок.
и даже такой вариант: $include, и такой $function ...
переменную можно назвать любым словом, даже нецензурным :) (http://ru.php.net/manual/ru/language.variables.basics.php)
Sham, это понятно, просто есть слова которые без $ могут что-то обозначать, лучше такие не использовать.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.