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

Тема в разделе "PHP", создана пользователем Stripe, 24 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Stripe

    Stripe

    Регистр.:
    21 окт 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));
    }
    В итоге я получаю следующее:
    Тоесть 4 массива.
    Как объединить их в один массив или же сразу получить один массив?
     
  2. naydav

    naydav Писатель

    Регистр.:
    10 июн 2008
    Сообщения:
    7
    Симпатии:
    1
    А вы уверены, что правильно составили запрос?
    Может быть так

     
  3. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Так вообще пустой экран. А в чем именно у меня не правильно составлен запрос?

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

    naydav Писатель

    Регистр.:
    10 июн 2008
    Сообщения:
    7
    Симпатии:
    1
    Просто запрос
    "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($resultMYSQL_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 запроса
    Самое быстое, попробуйте изменить на
     
  5. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Про 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 а неограниченное колличество.
     
  6. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    почитай про функции array_merge и array_merge_recursive. Если надо поменять ключи и значения местами, то array_reverse
     
    Stripe нравится это.
  7. Stripe

    Stripe

    Регистр.:
    21 окт 2007
    Сообщения:
    164
    Симпатии:
    9
    Спасибо! Тогда последжний вопрос:

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

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    считаешь кол-во массивов в своем двумерном через ф-ю count или sizeof. Далее в цикле for склеиваешь все в строку и запускаешь через eval.
     
    Stripe нравится это.
  9. ar4ik

    ar4ik

    Регистр.:
    26 ноя 2007
    Сообщения:
    331
    Симпатии:
    95
    пример с 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);

    ?>
     
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    Использовать в цикле ф-ю array_merge крайне не рекомендуется
     
Статус темы:
Закрыта.