<?php $data = [ 39 => [ 'parent_id' => 38, 'parent_name' => '', 'name' => 'cat1' ], 40 => [ 'parent_id' => 38, 'parent_name' => '', 'name' => 'cat2', 'children' => [ 58802 => [ 'parent_id' => 40, 'parent_name' => 'cat2', 'name' => 'cat2-1', 'children' => [ 63540 => [ 'parent_id' => 58802, 'parent_name' => 'cat2-1', 'name' => 'cat2-1-1' ] ] ] ] ], 41 => [ 'parent_id' => 38, 'parent_name' => '', 'name' => 'cat3' ], 42 => [ 'parent_id' => 38, 'parent_name' => '', 'name' => 'cat4' ] ]; $out = []; function walk($value, $key = null, &$out = []) { if (is_array($value)) foreach($value as $k => $v) { if (is_int($k)) $out[] = $k; if (is_array($v)) walk($v, $k, $out); } else { if (is_int($key)) $out[] = $key; if (is_array($value)) walk($value, $key, $out); } } walk($data, null, $out); var_dump(array_unique($out)); |