2015-11-06 4 views
0

Я пытался подсчитать последние элементы листового узла в массиве. Im мышление вдоль линий:Как подсчитать элементы листа ассоциативного/вложенного массива

  • Получение простого массива листовых элементов из testArray с помощью: «array_walk_recursive».
  • Подсчитайте элементы в новом массиве, используя: 'array_count_values'.

Я не уверен, как получить простой массив массивов из 'array_walk_recursive', я просто получаю длинную строку значений .... или есть лучший способ достичь этого результата?

DESIRED РЕЗУЛЬТАТ:

flammable = 1 
irritant = 2 
toxic = 3 

PHP:

$testArray = Array 
(
    [0] => Array 
    (
     [0] => toxic 
     [1] => irritant 
     [3] => flammable 
    ) 

    [1] => Array 
    (
     [0] => toxic 
     [1] => irritant 
    ) 

    [2] => Array 
    (
     [0] => toxic 
    ) 
); 

array_walk_recursive($testArray, function(&$value) 
{ 
    echo 'string = '.$value; 
    print_r(newArray);    //How can i get this new array list? 
}); 

$counts = array_count_values($newArray); //and use this to count values? 

ответ

1

Попробуйте это число должно отображаться в $groups массиве.

$groups = array(); 

array_walk_recursive($testArray, function(&$value) use (&$groups) 
{ 
    if (isset($groups[$value])) { 
     $groups[$value]++; 
    } else { 
     $groups[$value] = 1; 
    } 
}); 

print_r($groups); 
+0

Я просто получаю пустой массив с использованием этого? – Orbitall

+0

@Orbitall Ye, забыл установить '$ groups' в качестве ссылки. – Flosculus

+0

Приветствия, это намного проще, чем то, что я пытался! – Orbitall

Смежные вопросы