Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Объединить результат mysql_fetch_array() в одну переменную (http://forum.oszone.net/showthread.php?t=144491)

D_Master 08-07-2009 04:14 1161678

Объединить результат 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>

Sham 08-07-2009 04:32 1161682

т.е. рекурсивно склеить элементы массива? см. пример.

Sham 08-07-2009 04:47 1161687

по умолчанию mysql_fetch_array содержит и числовой и ассоциативный массивы, поэтому при склеивании будут дубли. Чтобы избежать этого, нужно вторым параметром добавить константу MYSQL_ASSOC (чтобы оставить только ассоциативный)... либо юзать mysql_fetch_assoc...

D_Master 08-07-2009 04:57 1161688

Цитата:

Цитата Sham
см. пример. »

То что надо, спасибо большое!
Готовый код, если надо
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
    
    */
?>


Igor_I 08-07-2009 19:35 1162336

А как вам такой вариант? Все значения пишем в массив, а потом как хотим так и выводим.
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;
    };    
?>


Coutty 08-07-2009 19:46 1162343

Igor_I, разве можно называть переменную зарезервированным словом return?

Igor_I 08-07-2009 21:38 1162426

Извините, :) я особо не раздумывал над переделкой примера. Обычно названия переменных делаю понятными. В данном случае было бы - $name или $sqlname

proxy 08-07-2009 21:38 1162427

Цитата:

Цитата Coutty
Igor_I, разве можно называть переменную зарезервированным словом return? »

не знаю на сколько можно или нельзя - в соответсвие языку, но раобтает без ошибок.
и даже такой вариант: $include, и такой $function ...

Sham 09-07-2009 07:30 1162653

переменную можно назвать любым словом, даже нецензурным :)

Igor_I 10-07-2009 17:23 1164018

Sham, это понятно, просто есть слова которые без $ могут что-то обозначать, лучше такие не использовать.


Время: 16:41.

Время: 16:41.
© OSzone.net 2001-