За последние 24 часа нас посетили 52590 программистов и 1800 роботов. Сейчас ищут 888 программистов ...

Подсчет количества значений массива

Тема в разделе "PHP для новичков", создана пользователем skillful, 4 сен 2013.

  1. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте!
    Есть такой код PHP
    Код (Text):
    1. foreach ($new as $key=>$value) {
    2.     foreach ($value as $key2=>$value2) {
    3.         if($value2[0]['id'] > (time() - 900) )
    4.         {
    5.             unset($new[$key][$key2]);
    6.         }
    7.     }
    8. }
    После него получается массив:
    Код (Text):
    1. Array
    2. (
    3.     [13] => Array
    4.         (
    5.             [2] => Array
    6.                 (
    7.                     [0] => Array
    8.                         (
    9.                             [id] => 2000
    10.                         )
    11.                     [1] => Array
    12.                         (
    13.                             [id] => 1998
    14.                         )
    15.                     [2] => Array
    16.                         (
    17.                             [id] => 1986
    18.                         )
    19.                     [3] => Array
    20.                         (
    21.                             [id] => 1962
    22.                         )
    23.                     [4] => Array
    24.                         (
    25.                             [id] => 1956
    26.                         )
    27.                     [5] => Array
    28.                         (
    29.                             [id] => 1954
    30.                         )
    31.                     [6] => Array
    32.                         (
    33.                             [id] => 1952
    34.                         )
    35.                 )
    36.         )
    37.     [2] => Array
    38.         (
    39.             [12] => Array
    40.                 (
    41.                     [0] => Array
    42.                         (
    43.                             [id] => 1960
    44.                         )
    45.                     [1] => Array
    46.                         (
    47.                             [id] => 1958
    48.                         )
    49.                     [2] => Array
    50.                         (
    51.                             [id] => 1944
    52.                         )
    53.                     [3] => Array
    54.                         (
    55.                             [id] => 1942
    56.                         )
    57.                 )
    58.             [13] => Array
    59.                 (
    60.                     [0] => Array
    61.                         (
    62.                             [id] => 1950
    63.                         )
    64.                     [1] => Array
    65.                         (
    66.                             [id] => 1948
    67.                         )
    68.                     [2] => Array
    69.                         (
    70.                             [id] => 1946
    71.                         )
    72.                 )
    73.         )
    74.     [12] => Array
    75.         (
    76.             [2] => Array
    77.                 (
    78.                     [0] => Array
    79.                         (
    80.                             [id] => 1940
    81.                         )
    82.                     [1] => Array
    83.                         (
    84.                             [id] => 1938
    85.                         )
    86.                 )
    87.         )
    88.     [10] => Array
    89.         (
    90.             [2] => Array
    91.                 (
    92.                     [0] => Array
    93.                         (
    94.                             [id] => 1936
    95.                         )
    96.                     [1] => Array
    97.                         (
    98.                             [id] => 1934
    99.                         )
    100.                 )
    101.         )
    102. )
    Вот в этот код php нужно добавить какую-нибудь переменную чтоб еще создавался массив с таким содержанием
    Код (Text):
    1. Array
    2. (
    3.     [13] => Array
    4.         (
    5.             [2] => 7 //сумма значений
    6.         )
    7.     [2] => Array
    8.         (
    9.             [12] => 4
    10.             [13] => 3
    11.         )
    12.     [12] => Array
    13.         (
    14.             [2] => 2
    15.         )
    16.     [10] => Array
    17.         (
    18.             [2] => 2
    19.         )
    20. )
    Не подскажите как это сделать
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Что нужно-то? Количество элементов подсчитать? Функции sizeof() или count() в помощь.
     
  3. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    элементарная рекурсия
    Код (Text):
    1. function deep_count($arr) {
    2.  $n = count($arr);
    3.  foreach ($arr as $v) {
    4.   if (is_array($v)) {
    5.    $n += deep_count($arr);
    6.   }
    7.  }
    8.  return $n;
    9. }
     
  4. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Поподробнее можно?
     
  5. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ну вообще то я невнимательно посмотрел, эта функция посчитает количество вообще всех элементов в исходном массиве $new =) короче не то.
    Код (Text):
    1. $new2[$key][$key2] = count($value2);
    наверное можно после условия дописать.
     
  6. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Огромное спасибо! Идеально
     
  7. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Еще вопрос. Как из того самого кода еще получить массив из id?
    $id = array(2000, 1998, 1986 и т.д.);
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    $mas[$id] = array(2000, 1998, 1986 и т.д.);