Количество многомерных массивов в PHP

У меня многомерный массив, настроенный следующим образом

array() { ["type1"] => array() { ["ticket1"] => array(9) { // ticket details here } ["ticket2"] => array(10) { // ticket details here } ["ticket3"] => array(9) { // ticket details here } } ["type2"] => array() { ["ticket1"] => array(9) { // ticket details here } ["ticket2"] => array(10) { // ticket details here } ["ticket3"] => array(9) { // ticket details here } } } 

и т.п.

Я пытаюсь получить количество общего количества билетов в массиве (количество элементов второго уровня), но количество типов является переменным, как и количество полей, которые есть у каждого билета, поэтому я не могу использовать COUNT_RECURSIVE и математику для получите номер.

Может кто-нибудь мне помочь?

 $count = 0; foreach ($array as $type) { $count+= count($type); } 

Немного поздно, но это чистый способ написать его.

 $totalTickets = array_sum(array_map("count", $tickets)); 

Предполагая, что $tickets – ваш многомерный массив.

Я расширил код, чтобы дать объясненный пример, потому что array_map может быть новым для некоторых

 $tickets = array( "type1" => array( "ticket1" => array(), "ticket2" => array(), "ticket3" => array(), ), "type2" => array( "ticket4" => array(), "ticket5" => array(), "ticket6" => array(), "ticket7" => array(), ), "type3" => array( "ticket8" => array() ) ); // First we map count over every first level item in the array // giving us the total number of tickets for each type. $typeTotals = array_map("count", $tickets); // print_r($typeTotals); // $type_totals --> Array ( // [type1] => 3, // [type2] => 4, // [type3] => 1 // ) //Then we sum the values of each of these $totalTickets = array_sum($typeTotals); print($totalTickets); // $totalTickets --> 8 

Так как мы не заботимся о промежуточном результате каждого типа, мы можем подать результат в массив_sum

 $totalTickets = array_sum(array_map("count", $tickets)); 

Используйте Count Recursive и вычитайте счет первого уровня , например:

 count($mainArr, COUNT_RECURSIVE) - count($mainArr); 

Если ваш массив имеет +3 уровня, просто добавьте ключи [?]:

 count($mainArr[1], COUNT_RECURSIVE) - count($mainArr[1]); 

Самый простой способ сделать это – один простой цикл foreach:

 $count = 0; foreach( $tickets as $ticketType){ $count += count( $ticketType); } 
 $multiArrayTickets = array(...); $countTickets = 0; foreach($multiArrayTickets as $tickets) $countTickets += count($tickets); echo $countTickets . " tickets found."; 

🙂

 $test = array ( array ( 'test','test','test' ), array ( 'test','test' ), array ( array ( 'test' ), array ( 'test','test','test','test' ) ) ); echo " array count ". count($test[0]) ." <br /> "; echo " array count ". count($test[1]) ." <br /> "; echo " array count ". count($test[2]) ." <br /> "; echo " array count ". count($test[2],1) ." <br /> "; echo " array count ". (count($test[2],1) - count($test[2])) ." <br /> "; // all child num - parent num echo " array count ". count($test[2][1]) ." <br /> "; 

вывод:

количество массивов 3

количество массивов 2

количество массивов 2

количество массивов 7

количество массивов 5

количество элементов массива 4

Чтобы подсчитать общее количество билетов, этот ниже код поможет вам в PHP.

 foreach($mainArray as $Array){ foreach($Array as $perTicke){ $count++; } } $total_ticket = $count;