Добрый день Хочу нарисовать топологию сети. Есть вот такие данные надо чтобы скрипт пробежался по эти данным и сформировал такую структуру Код (PHP): 10.11.22.254 / | \ 10.11.22.2 10.11.22.6 10.11.22.4 | 10.11.22.7 \ | 10.11.22.8 10.11.22.9 Подскажите в какую сторону хотя бы копать.
Код (PHP): // в качестве таблицы БД просто массив $elems = array( array( 'id' => 1, 'pid' => 0, 'title' => '10.11.21.254' ), array( 'id' => 2, 'pid' => 1, 'title' => '10.11.21.2' ), array( 'id' => 3, 'pid' => 1, 'title' => '10.11.21.3' ), array( 'id' => 4, 'pid' => 3, 'title' => '10.11.21.4' ), array( 'id' => 5, 'pid' => 0, 'title' => '10.11.21.253' ), array( 'id' => 6, 'pid' => 5, 'title' => '10.11.21.14' ), array( 'id' => 7, 'pid' => 5, 'title' => '10.11.21.15' ), array( 'id' => 8, 'pid' => 5, 'title' => '10.11.21.16' ), array( 'id' => 9, 'pid' => 0, 'title' => '10.11.21.252' ), ); $links = array(); $tree = array(); for( $q = 0; $q < count( $elems ); $q++ ) { $elem = $elems[$q]; if( $elem['pid'] === 0 ) { $tree[$elem['id']] = $elem; $links[$elem['id']] = &$tree[$elem['id']]; } else { $links[$elem['pid']]['childrens'][$elem['id']] = $elem; $links[$elem['id']] = &$links[$elem['pid']]['childrens'][$elem['id']]; } } print_r($tree);
Код (PHP): foreach($table as $ip=>$mac){ $neigbors = snmpwalk($ip, 'public', '1.0.8802.1.1.2.1.4.1.1.5'); if($neigbors){ foreach($neigbors as $neigbor){ $neigbor_mac = clearHex($neigbor); $neigbor_ip = array_search($neigbor_mac, $table); $full_table[$ip][] = $neigbor_ip; } } } print_r($full_table); В массиве $table находится список всех ip адресов, перебирая массив на каждый ip адрес отправляется запрос, который возвращает соседей(ip адреса). Получается следующий результат(это кусок): Код (PHP): [10.11.22.2] => Array ( [0] => 10.11.22.254 ) [10.11.22.3] => Array ( [0] => 10.11.22.11 ) [10.11.22.4] => Array ( [0] => 10.11.22.254 [1] => 10.11.22.9 ) [10.11.22.5] => Array ( [0] => 10.11.22.254 ) [10.11.22.6] => Array ( [0] => 10.11.22.7 [1] => 10.11.22.254 ) [10.11.22.7] => Array ( [0] => 10.11.22.8 [1] => 10.11.22.6 ) [10.11.22.254] => Array ( [0] => 10.11.22.251 [1] => 10.11.22.5 [2] => 10.11.22.35 [3] => 10.11.22.2 [4] => 10.11.22.4 [5] => 10.11.22.252 [6] => [7] => 10.11.22.32 [8] => 10.11.22.6 [9] => 10.11.22.33 ) Мне надо этот массив перебрать так, чтобы в конце получилось Код (PHP): [10.11.22.254] => Array ( [0] => Array( [0]=>10.11.22.3, [1]=>10.11.22.18, [2]=>10.11.22.20, [3]=>10.11.22.22, [4]=>10.11.22.26 ) [1] => 10.11.22.5 [2] => 10.11.22.35 [3] => 10.11.22.2 [4] => 10.11.22.4 [5] => 10.11.22.252 [6] => [7] => 10.11.22.32 [8] => 10.11.22.6 [9] => 10.11.22.33 )