За последние 24 часа нас посетили 21327 программистов и 1225 роботов. Сейчас ищут 682 программиста ...

Посчитать сумму элементов массива, имеющих разные ключи, но

Тема в разделе "Вопросы от блондинок", создана пользователем [vs], 5 окт 2007.

Статус темы:
Закрыта.
  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Никак не могу разобраться как посчитать сумму элементов массива, имеющих разные ключи, но имеющих одинаковые ключи в вложеном массиве.
    Пример:
    Код (Text):
    1. array(10[1] => 5, 10[2] => 7, 11[1] => 8, 11[2] => 9);
    Нужно получить сумму эллементов и индексом [2], т.е. в примере сумму 7+9
    Помогите!
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    слабо понял
    PHP:
    1. <?php
    2. $r=array(array(5,7), array(9,9));
    3. foreach($r as $key => $val)
    4.     echo $key.' — '.array_sum($val).'<br />';
    5. ?>
    это что ли?
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Тоже слабо понял. Может быть так:
    PHP:
    1.  
    2. <?
    3. for ($i=0;$i<sizeof($array);$i++) {
    4.   $res += $array[$i][2];
    5. }
    6. echo $res;
    7. ?>
    8.  
    UPD: Вернее понял нормально, но не уверен в верности подхода :).
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Короче, есть массив с кучей ключей, ключи - стринговые, выбирать их просто инкрементом одной переменной не получится. Каждому ключу в этом массиве соответствует вложеный массив, состоящий из двух ключей.
    Так вот, задача: взять массив с кучей ключей, из всех этих ключей большого массива взять значения второго ключа во вложеном массиве каждого ключа большого массива, и суммировать их.
    Типа:
    Код (Text):
    1.  
    2. array_big("Ключ1"[1] => 3, "Ключ1"[2] => 5, "Ключ какой-то"[1] => 7, "Ключ какой-то"[2] => 4 и т.д.....);
    Нужен скрипт, который брал бы значения вторых ключей вложеных массиво из всех ключей массива array_big и суммировал их.

    P.S.
    Kreker
    Кажется проблему можно решить другим путем - если можно как-нибудь получить ввиде массива список ключей из моего массива.
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    вот это — не массив, а сплошное недорозумение.
    PHP:
    1. <?php
    2. $r=array('string1'=>array(5,7), 'string2'=>array(9,9));
    3. $sum=0;
    4. foreach($r as $key => $val){
    5.  $sum += $val[1];
    6. }
    7. echo $sum;
    8. ?>
    * были бы права — в блонднки перенёс бы за одну формулировку*
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Угу, я забыл как выглядит структура массива с вложеными массивами :)
    Большое спасибо :)
    Единственное - имена ключей стринговых заранее неизвестны, т.е. перечислять их низя.
    Я решил проблему так:
    PHP:
    1.  
    2. <?php
    3. $r=array('string1'=>array(5,7), 'string2'=>array(9,9));
    4. $ak = array_keys($r);
    5. $sum=0;
    6. foreach ($ak as $aks)
    7. {
    8. $sum += $r[$aks][2];
    9.  }
    10.  print $sum;
    11.  ?>
    12.  
    Всем спасибо :)
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    это тут к чему?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Ну, всмысле что их нельзя записать вручную, они изменяются.
    Ладно, вопрос был ламерский - решается с помощью стандартной функции array_keys и цикла foreach, всё уже работает =)
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Хе) Изначально в моем варианте был foreach. Потом увидел, что у автора индексный массив и заменил на for.
     
  10. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    И чего дальше? foreach ваще пофиг, какие ключи у массива.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Не понятно как работает код
    PHP:
    1.  
    2.  <?php
    3.  $r=array('string1'=>array(5,7), 'string2'=>array(9,9));
    4.  $ak = array_keys($r);
    5.  $sum=0;
    6.  foreach ($ak as $aks)
    7.  {
    8.  $sum += $r[$aks][2];
    9.   }
    10.   print $sum;
    11.   ?>
    12.  
    ?
    В массиве $r к каждому ключу относится по два значения (вложеный массив), при этом названия ключей в массиве $r не известны.
    Требовалось получить сумму вторых значений вложеных массивов из массива $r.
    Для этого функцией array_keys в массив $ak записывается массив - список ключей в массиве $r.
    Потом с помощью цикла foreach ($ak as $aks) к перемнной $sum приплюсовывется значение 2 вложеного массива из массива $r, а ключь к вложеному массиву в массиве $r подставляется из массива $ak, в котором содержится заранее взятый список ключей из массива $r.
     
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Почитай, как работает foreach. То что ты показал, явный изврат.
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    [vs]
    foreach отлично справляется с перебором ключей массива. И известны они или нет — не важно.
    $r[$aks][2] — это третий элемент
     
  14. Anonymous

    Anonymous Guest

    ЕЩЕ РАЗ! Я УВИЖУ ТЕБЯ! В РАЗДЕЛЕ ПРОГРАММИРОВАНИЕ НА PHP! С ДУРАЦКИМИ ВОПРОСАМИ! ЗАБАНЮ НАХЕР!
    Моя жизнь, особенно в утро выходного дня, вовсе не сводится к желанию подтирать вам попку и переносить все в нужный раздел!
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Сорри, тот код не работает :)
    Работает этот:
    PHP:
    1. <?php
    2. $r=array("key1" => array (5,3), "key2" => array(9,9));
    3.   $ak = array_keys($r);
    4.   $sum=0;
    5.  
    6.   foreach ($ak as $aks)
    7.   {
    8.   $sum += $r[$aks][1];
    9.    }
    10.  
    11.    print $sum;
    12.    ?>
    Да вопрос не в этом был!! Вопрос был изначально, фактически, как получить значения из масства из элементов вложенного массива, если ключи к ним этим вложеным массивам стринговые и заранее не известны!!!
    Вопрос решился когда прочитал про функцию array_keys, всё, проблемы нет //
     
  16. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Каким образом то решение не работает?
    PHP:
    1. <?php
    2. $r = array('string1' => array(5, 7), 'string2' => array(9, 9));
    3. $sum = 0;
    4.  
    5. foreach($r as  $v){
    6.     $sum += $v[1];
    7. }
    8.  
    9. echo $sum;
    Печатает
    Код (Text):
    1. 16
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Да я вообще-то про
    Он правида не работает.
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    // тема движется к маразму. Закрыл
     
Статус темы:
Закрыта.