Объединение массивов

Статус
В этой теме нельзя размещать новые ответы.

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Есть следующий код:
PHP:
$data = mysql_query("musick, musick1, musick2, musick3, musick4 FROM oradio");


while (
$tab = mysql_fetch_row($data)
) {
print_r(array_count_values($tab));
}

В итоге я получаю следующее:
Array ( [151] => 1 [135] => 1 [] => 3 ) Array ( [216] => 1 [] => 4 ) Array ( [117] => 1 [113] => 1 [] => 3 ) Array ( [113] => 1 [130] => 1 [] => 3 )
Тоесть 4 массива.
Как объединить их в один массив или же сразу получить один массив?
 
Есть следующий код:
PHP:
$data = mysql_query("musick, musick1, musick2, musick3, musick4 FROM oradio");
while (
$tab = mysql_fetch_row($data)
) {
print_r(array_count_values($tab));
}
В итоге я получаю следующее:
Тоесть 4 массива.
Как объединить их в один массив или же сразу получить один массив?

А вы уверены, что правильно составили запрос?
Может быть так

$result = mysql_query("SELECT musick, musick1, musick2, musick3, musick4 FROM oradio");

while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}

print_r( $rows );
 
Так вообще пустой экран. А в чем именно у меня не правильно составлен запрос?

UPD мне нужно подсчитать колличество одинаковых элементов в массиве, затем подсчитать процентную составляющую каждого элемента.
 
Так вообще пустой экран. А в чем именно у меня не правильно составлен запрос?
UPD мне нужно подсчитать колличество одинаковых элементов в массиве, затем подсчитать процентную составляющую каждого элемента.

Просто запрос
"musick, musick1, musick2, musick3, musick4 FROM oradio" - неверный
нужно

"SELECT musick, musick1, musick2, musick3, musick4 FROM oradio"
Если вы не используете для баз данных класс оболочку, такая последовательность действий:

PHP:
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT musick, musick1, musick2, musick3, musick4 FROM oradio");

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

    mysql_free_result($result);

    print_r( $rows );

?>

Таблица oradio существует?

Пустой экран, потому что ошибки не отображаютя, нужно включить вывод ошибок, например так:

PHP:
error_reporting(E_ALL & ~E_STRICT);
ini_set('display_errors', TRUE);
вначало кода, если это конечно позволяет хостинг

Добавлено через 4 минуты
PHP:
while (
$tab = mysql_fetch_row($data)
) {
print_r(array_count_values($tab));
}

просто $tab пустой, из-за неверного sql запроса
$data = mysql_query("musick, musick1, musick2, musick3, musick4 FROM oradio");
Самое быстое, попробуйте изменить на
$data = mysql_query("SELECT musick, musick1, musick2, musick3, musick4 FROM oradio");
 
Про SELECT я у себя поправил сразу, сюда вот попал не поправленный кусок.
База существует, таблица в ней то же существует, более того в других случаях работает. В Вашем вароианте получается слудующий вывод:
PHP:
Array
(
    [0] => Array
        (
            [0] => 151
            [1] => 135
            [2] => 
            [3] => 
            [4] => 
        )

    [1] => Array
        (
            [0] => 216
            [1] => 
            [2] => 
            [3] => 
            [4] => 
        )

    [2] => Array
        (
            [0] => 117
            [1] => 113
            [2] => 
            [3] => 
            [4] => 
        )

    [3] => Array
        (
            [0] => 113
            [1] => 130
            [2] => 
            [3] => 
            [4] => 
        )
)
)



[] - пустые поля (не страшно), мне нужно что бы в итоге получилось вот так:

PHP:
Array
(
    [151] => 1
    [135] => 1
    [216] => 1
    [117] => 1
    [113] => 2
    [130] => 1
    [] => 13
)

Добавлю: Записей в БД может быть не 4 а неограниченное колличество.
 
почитай про функции array_merge и array_merge_recursive. Если надо поменять ключи и значения местами, то array_reverse
 
Спасибо! Тогда последжний вопрос:

В примере указаны два массива, у меня же не ограниченное количество может быть:
$array1 = array ("color" => "red", 2, 4);
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge ($array1, $array2);

Как указать для объедлинения все множество массивов от первого до последнего?
 
Спасибо! Тогда последжний вопрос:

В примере указаны два массива, у меня же не ограниченное количество может быть:


Как указать для объедлинения все множество массивов от первого до последнего?

считаешь кол-во массивов в своем двумерном через ф-ю count или sizeof. Далее в цикле for склеиваешь все в строку и запускаешь через eval.
 
Как указать для объедлинения все множество массивов от первого до последнего?
пример с php.net
PHP:
<?php

// Make vars ready
    $a=0;
    $alltopic = array();

// Start an routine
//    4 is just an example you can use an varible containing
//    the number of rows in an databse for example
    while ($a < 4)
        {
            $topic = array($a => "$a");
            $alltopic = array_merge ($alltopic, $topic);
            $a++;
        };

// Put it on screen:
    print_r($alltopic);

?>
 
пример с php.net
PHP:
<?php

// Make vars ready
    $a=0;
    $alltopic = array();

// Start an routine
//    4 is just an example you can use an varible containing
//    the number of rows in an databse for example
    while ($a < 4)
        {
            $topic = array($a => "$a");
            $alltopic = array_merge ($alltopic, $topic);
            $a++;
        };

// Put it on screen:
    print_r($alltopic);

?>
Использовать в цикле ф-ю array_merge крайне не рекомендуется
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху