ФорумПрограммированиеPHP для идиотов → выборка из массива

выборка из массива

  • welder

    Сообщения: 2945 Репутация: N Группа: в ухо

    Spritz 10 марта 2011 г. 20:02

    Памажите, ваще в вашем пхп не рублю .вобщем есть у меня массифчег с данными мне нужно сосчитать сумму [2] за день [1] изабрёл велосипед с ифами но имхо это уебанство какоето



    Array
    (
    [0] => Array
    (
    [1] => 2011-03-01
    [2] => 666.00
    [4] => Хуй
    )

    [1] => Array
    (
    [1] => 2011-03-01
    [2] => 40.00
    [4] => Пизда
    )

    [2] => Array
    (
    [1] => 2011-03-01
    [2] => 80.00
    [4] => Хуй
    )

    [3] => Array
    (
    [1] => 2011-03-01
    [2] => 22.33
    [4] => Пизда
    )

    [4] => Array
    (
    [1] => 2011-03-03
    [2] => 127.00
    [4] => Хуй
    )

    [5] => Array
    (
    [1] => 2011-03-08
    [2] => 10.00
    [4] => Хуй
    )

    [6] => Array
    (
    [1] => 2011-03-08
    [2] => 666.00
    [4] => Хуй
    )

    [7] => Array
    (
    [1] => 2011-03-08
    [2] => 30.00
    [4] => Хуй
    )

    [8] => Array
    (
    [1] => 2011-03-10
    [2] => 123.00
    [4] => Пизда
    )

    [9] => Array
    (
    [1] => 2011-03-10
    [2] => 15.00
    [4] => Пизда
    )

    )
    Спустя 96 сек.
    да и чот он нехуя не пашед даже код не выложу надо искать нормальный подход
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 10 марта 2011 г. 20:10, спустя 7 минут 4 секунды


    $result = 0;
    foreach ($myArray as $data) {
    $result += $data[2];
    }


    так ?
    Спустя 43 сек.
    а сори, условие не доконца дочитал
    Спустя 168 сек.
    $result = array();
    foreach ($myArray as $data) {
    if (isset($result[$data[1]])) {
    $result[$data[1]] += $data[2];
    } else {
    $result[$data[1]] = $data[2];
    }
    }
  • welder

    Сообщения: 2945 Репутация: N Группа: в ухо

    Spritz 10 марта 2011 г. 20:30, спустя 20 минут 7 секунд

    о да я был близок к цели.. спасибо,чмоки чмоки
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 10 марта 2011 г. 20:32, спустя 2 минуты 13 секунд

    чмоки,чмоки)))
    привезешь в Питер пива =))))
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 11 марта 2011 г. 14:12, спустя 17 часов 40 минут 37 секунд

    этакий самодельный SQL select sum(n) :)))

    <?php

    $source = array(
    array('2011-03-01', 666.00, 'Хуй'),
    array('2011-03-01',  40.00, 'Пизда'),
    array('2011-03-01',  80.00, 'Хуй'),
    array('2011-03-01',  22.33, 'Пизда'),
    array('2011-03-03', 127.00, 'Хуй'),
    array('2011-03-08',  10.00, 'Хуй'),
    array('2011-03-08', 666.00, 'Хуй'),
    array('2011-03-08',  30.00, 'Хуй'),
    array('2011-03-10', 123.00, 'Пизда'),
    array('2011-03-10',  15.00, 'Пизда')
    );

    $dates = array_unique(array_map(create_function('$item', '{ return $item[0]; }'), $source));

    $sums = array();
    foreach ($dates as $date) {
       $allOnDate = array_filter($source, create_function('$item', '{ return $item[0] == \'' . $date . '\'; }'));
       $sumOnDate = array_reduce($allOnDate, create_function('$v, $w', '{ $v += $w[1]; return $v; }'), 0);
       $sums[$date] = $sumOnDate;
    }

    var_export($sums);
    ιιlllιlllι унц-унц
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 11 марта 2011 г. 9:34, спустя 19 часов 21 минуту 17 секунд

    artoodetoo, тебе не кажется что мой вариант слегка читабельнее ?)))
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 11 марта 2011 г. 14:12, спустя 4 часа 38 минут 16 секунд

    согласен. это просто блажь - сделать по максимуму на array_*
    ιιlllιlllι унц-унц
  • Yasumi

    Сообщения: 28 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 23:23, спустя 526 дней 8 часов 10 минут

    ага,мне так говорятт,кагда собираються меня бросить

Пожалуйста, авторизуйтесь, чтобы написать комментарий!