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

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

  • welder

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

    Spritz 10 марта 2011 г. 9: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 г. 9: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

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

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

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

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

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

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

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

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

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

    <?php

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

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

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

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

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

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

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

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

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

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

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

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

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

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