PHP 再帰的無限分類
再帰的無限分類にはいくつかの形式がありますが、より一般的に使用される 3 つの例のみを示します:
最初の形式: ソートされた配列を返します:
<?php$data = array( 1 => array( 'id' => 1, 'pid' => 0, 'user_name' => 'one', ), 2 => array( 'id' => 2, 'pid' => 1, 'user_name' => 'two', ), 3 => array( 'id' => 3, 'pid' => 1, 'user_name' => 'two', ), 4 => array( 'id' => 4, 'pid' => 2, 'user_name' => 'three', ), 5 => array( 'id' => 5, 'pid' => 2, 'user_name' => 'three', ),);function genCate( $data, $pid = 0, $level = 0 ) { $string = str_repeat( "--", $level ) . '|'; static $result = array(); $result = empty( $level ) ? array() : $result; foreach ( $data as $k => $row ) { if ( $row['pid'] == $pid ) { $row['user_name'] = $string . $row['user_name']; $result[] = $row['user_name']; genCate( $data, $row['id'], $level + 1 ); } } return $result;}echo '<pre class="brush:php;toolbar:false">';$result = genCate( $data );print_r( $result );exit;?>
3 番目のタイプ: 多次元配列形式を返します: