沒有代碼有思路也可以
例如
$earth = array(
'asia'=>array( 'china'=>array( 'beijing', 'shanghai', 'tianjin', 'hangzhou' ), 'japan'=>array( 'tokyo', 'hokkaido', 'nagasaki' )),'europe'=>array( 'france'=>array( 'paris', 'lyon' ), 'spain'=>array( 'madrid', 'barcelona', 'sevilla' )),'australia'=>array( 'australia'=>array( 'sydney', 'melbourne' ))
);
返回 3,5,14
回複內容:
沒有代碼有思路也可以
例如
$earth = array(
'asia'=>array( 'china'=>array( 'beijing', 'shanghai', 'tianjin', 'hangzhou' ), 'japan'=>array( 'tokyo', 'hokkaido', 'nagasaki' )),'europe'=>array( 'france'=>array( 'paris', 'lyon' ), 'spain'=>array( 'madrid', 'barcelona', 'sevilla' )),'australia'=>array( 'australia'=>array( 'sydney', 'melbourne' ))
);
返回 3,5,14
我覺得你要做這種統計的話,應該只能用遞迴的方式了
// $array:要統計的數組,$i為第幾維,$count維上層統計function count_array($array,$i=1,$count = array()) { $n = 0; if(isset($count[$i])) { $n = $count[$i]; } $count[$i] = count($array) + $n; $i += 1; foreach($array as $item) { if(is_array($item)) { $count = sp_arr($item,$i,$count); } } return $count;}$array = array( 'a' => array( 'b' => 'c', 'd' => 'e', 'f' => 'g', ), 'h' => array( 'i' => array( 'j' => 'k', 'l' => 'm', 'n' => array( 'o' => 'p', 'q' => 'r' ) ) ));$count = count_array($array);var_dump($count); // result:/** *array (size=4) * 1 => int 2 * 2 => int 4 * 3 => int 3 * 4 => int 2 */
好吧,我寫個迴圈的(可最佳化,自行最佳化,因為我對PHP不是很熟)
簡單來說是一個廣度優先搜尋(稍微最佳化一下的隊列,如果改成棧就是深度優先)
function count_array($array) { $count = array(); $level = 0; $tfifo = $array; do{ $fifo = $tfifo; $tfifo = array(); $count[$level] = 0; foreach($fifo as $item){ $count[$level]++; if(is_array($item)) { foreach($item as $subitem){ $tfifo[] = $subitem; } } } $level++; }while(count($tfifo)>0); return $count;}
arr{x}{y}[z]
第三維度元素個數不就是arr{x}{y}.length嗎?
依次類推不就行了?
還是說我對你的問題理解上有錯誤?
用中括弧剛前面的沒出來,,,
$num = array() ; function get_num($fat,$num){ $num[] = count($fat) ; $sun = array() ; foreach ($fat as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { $sun[] = $v ; } } } if ($sun) { return get_num($sun,$num) ; } return $num ;}// var_dump(get_num($arr,$fat)) ;大神解答,發出來給大家分享一下