<?php
function count_children1( & $array ) {
foreach ( $array [ 'children' ] as & $child ) {
if ( isset ( $child [ 'children' ] ) ) { $array [ 'children_count' ] += count_children( $child ) ;
}
else return 1 ;
}
}
function count_children( & $table ) {
$count = 0 ;
foreach ( $table as & $array ) {
if ( isset ( $array [ 'children' ] ) ) { $count += count ( $array [ 'children' ] ) ; $count += count_children( $array [ 'children' ] ) ;
}
$array [ 'children_count' ] = $count ;
}
return $count ;
}
$table1 = [ [ 1 ] => [
[ 'id' ] => 1 ,
[ 'children_count' ] => 0
] , 2 , 3 ] ;
$table = [
1 => [
'id' => 1 ,
'children_count' => 0
] ,
2 => [
'id' => 2 ,
'children_count' => 0 ,
'children' => [
3 => [
'id' => 3 ,
'children_count' => 0 ,
'children' => [
4 => [
'id' => 4 ,
'children_count' => 0 ,
'children' => [
5 => [
'id' => 5 ,
'children_count' => 0
] ,
6 => [
'id' => 6 ,
'children_count' => 0
]
]
]
]
]
]
]
] ;
$table1 = [
1 => [
'id' => 1 ,
'children_count' => 0
] ,
2 => [
'id' => 2 ,
'children_count' => 0 ,
'children' => [
3 => [
'id' => 3 ,
'children_count' => 0 ,
'children' => [
4 => [
'id' => 4 ,
'children_count' => 0 ,
'children' => [
5 => [
'id' => 5 ,
'children_count' => 0
] ,
6 => [
'id' => 6 ,
'children_count' => 0
]
]
]
] ] ,
7 => [
'id' => 7 ,
'children_count' => 0
] ,
]
]
] ;
//var_dump($table);
foreach ( $table as & $element ) {
// if(isset($element['children'])) count_children($element);
}
count_children( $table1 ) ;
PD9waHAKZnVuY3Rpb24gY291bnRfY2hpbGRyZW4xKCYkYXJyYXkpewoJZm9yZWFjaCgkYXJyYXlbJ2NoaWxkcmVuJ10gYXMgJiRjaGlsZCl7CgkJaWYoaXNzZXQoJGNoaWxkWydjaGlsZHJlbiddKSl7CgkJCSRhcnJheVsnY2hpbGRyZW5fY291bnQnXSArPSBjb3VudF9jaGlsZHJlbigkY2hpbGQpOwoJCX0KCQllbHNlIHJldHVybiAxOwoJfQp9CgpmdW5jdGlvbiBjb3VudF9jaGlsZHJlbigmJHRhYmxlKXsKICAkY291bnQgPSAwOwogIGZvcmVhY2goJHRhYmxlIGFzICYkYXJyYXkpIHsKICAgIGlmIChpc3NldCgkYXJyYXlbJ2NoaWxkcmVuJ10pKSB7CiAgICAgICRjb3VudCArPSBjb3VudCgkYXJyYXlbJ2NoaWxkcmVuJ10pOwogICAgICAkY291bnQgKz0gY291bnRfY2hpbGRyZW4oJGFycmF5WydjaGlsZHJlbiddKTsKICAgIH0KICAgICRhcnJheVsnY2hpbGRyZW5fY291bnQnXSA9ICRjb3VudDsKICB9CiAgcmV0dXJuICRjb3VudDsgCn0KCiR0YWJsZTEgPSBbWzFdID0+IFsKICAgICAgICBbJ2lkJ10gPT4gMSwKICAgICAgICBbJ2NoaWxkcmVuX2NvdW50J10gPT4gMAogICAgXSwyLDNdOwoKJHRhYmxlID0gWwogICAgMSA9PiBbCiAgICAgICAgJ2lkJyA9PiAxLAogICAgICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMAoJXSwKICAgIDIgPT4gWwogICAgICAgICdpZCcgPT4gMiwKICAgICAgICAnY2hpbGRyZW5fY291bnQnID0+IDAsCiAgICAgICAgJ2NoaWxkcmVuJyA9PiBbCiAgICAgICAgICAgIDMgPT4gWwogICAgICAgICAgICAgICAgJ2lkJyA9PiAzLAogICAgICAgICAgICAgICAgJ2NoaWxkcmVuX2NvdW50JyA9PiAwLAogICAgICAgICAgICAgICAgJ2NoaWxkcmVuJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgNCA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgPT4gNCwKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoaWxkcmVuX2NvdW50JyA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRyZW4nID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgPT4gNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRyZW5fY291bnQnID0+IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyA9PiA2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICBdCiAgICAgICAgXQogICAgXQogICAgCl07CgokdGFibGUxID0gWwoxID0+IFsKICAgICdpZCcgPT4gMSwKICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMApdLAoyID0+IFsKICAgICdpZCcgPT4gMiwKICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMCwKICAgICdjaGlsZHJlbicgPT4gWwogICAgICAgIDMgPT4gWwogICAgICAgICAgICAnaWQnID0+IDMsCiAgICAgICAgICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMCwKICAgICAgICAgICAgJ2NoaWxkcmVuJyA9PiBbCiAgICAgICAgICAgICAgICA0ID0+IFsKICAgICAgICAgICAgICAgICAgICAnaWQnID0+IDQsCiAgICAgICAgICAgICAgICAgICAgJ2NoaWxkcmVuX2NvdW50JyA9PiAwLAogICAgICAgICAgICAgICAgICAgICdjaGlsZHJlbicgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA1ID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgPT4gNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZHJlbl9jb3VudCcgPT4gMAogICAgICAgICAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICAgICAgICAgNiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWQnID0+IDYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGRyZW5fY291bnQnID0+IDAKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgXV0sCiAgICAgICAgNyA9PiAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJyA9PiA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoaWxkcmVuX2NvdW50JyA9PiAwCiAgICAgICAgICAgICAgICAgICAgICAgIF0sICAgICAgIAogICAgICAgIAogICAgXQogICAgCl0gICAgCl07CgkKLy92YXJfZHVtcCgkdGFibGUpOwpmb3JlYWNoKCR0YWJsZSBhcyAmJGVsZW1lbnQpewovLwlpZihpc3NldCgkZWxlbWVudFsnY2hpbGRyZW4nXSkpIGNvdW50X2NoaWxkcmVuKCRlbGVtZW50KTsKfQoKY291bnRfY2hpbGRyZW4oJHRhYmxlMSk7CgpwcmludF9yKCR0YWJsZTEpOwoJ