2011-03-08 33 views
5

Tôi đang cố gắng sử dụng hàm theo đó tôi thấy chiều cao (trục y) mảng hai chiều là trong PHP. Làm thế nào bạn sẽ đề nghị tôi làm điều này? Xin lỗi, tôi mới sử dụng PHP.PHP Array.length cho mảng hai chiều (trục y)

+0

@phihag đưa ra một giải pháp rất thanh lịch ... không có mảng 2 chiều thực sự trong PHP, 'mảng của mảng' có thể là bất kỳ độ dài nào, vì vậy bạn sẽ phải nhận được mảng mảng lớn nhất. – dianovich

Trả lời

23
max(array_map('count', $array2d)) 
+0

Vâng giải pháp thực sự tốt đẹp. – dianovich

+0

+1 Giải pháp này nhắc tôi về MATLAB :) – Czechnology

+0

cảm ơn rất nhiều @phihag – wingskush

0

Tóm lại chiều kích thứ hai, sử dụng count trong một vòng lặp:

$counter = 0; 
foreach($var AS $value) { 
    $counter += count($value); 
} 

echo $counter; 
0

1.dimension:

count($arr); 

2.dimension:

function count2($arr) { 
    $dim = 0; 

    foreach ($arr as $v) { 
    if (count($v) > $dim) 
     $dim = count($v); 
    } 

    return $dim; 
} 

Như có thể có mỗi mảng/vectơ khác nhau ngth (không giống như một ma trận toán học), bạn phải tìm kiếm tối đa. chiều dài.

1
$max = 0; 

foreach($array as $val){ 
$max = (count($val)>$max?count($val):$max) 
} 

nơi $ max là số bạn đang tìm kiếm

1

Nếu trục y là mảng bên ngoài, sau đó thực sự chỉ là count($array). Kích thước thứ hai chỉ là count($array[0]) nếu nó đồng nhất.

3

Một mảng đa chiều chỉ đơn giản là một mảng của mảng - nó không giống như bạn đã bị chặn ra một bộ hình chữ nhật địa chỉ; giống như một chiếc xe lửa nơi mỗi chiếc xe có thể được xếp chồng lên nhau cao như bạn muốn.

Như vậy, "height" của mảng, có lẽ, là số của thành viên mảng hiện lớn nhất. @phihag đã đưa ra một cách tuyệt vời để có được điều đó (max(array_map(count, $array2d))) nhưng tôi chỉ muốn chắc chắn rằng bạn hiểu ý nghĩa của nó. Chiều cao tối đa của các mảng khác nhau trong mảng mẹ không ảnh hưởng đến kích thước hoặc dung lượng của bất kỳ thành viên mảng nào đã cho.

+0

Khi chúng ta bắt đầu nói về kích thước của mảng 2D, tôi đề nghị gắn bó với tương đương toán học của một ma trận, trong đó chiều cao-nhiều hàng - thường được coi là kích thước và chiều rộng đầu tiên - số cột - cột thứ hai. – Czechnology

0

Trong đơn đăng ký của tôi, tôi đã sử dụng phương pháp này.

$array = array(); 

$array[0][0] = "one"; 
$array[0][1] = "two"; 

$array[1][0] = "three"; 
$array[1][1] = "four"; 

for ($i=0; isset($array[$i][1]); $i++) { 
    echo $array[$i][1]; 
} 

đầu ra: twofour

Có lẽ, đây không phải là phương pháp tốt nhất cho các ứng dụng của bạn, nhưng đối với tôi nó làm việc một cách hoàn hảo.

Các vấn đề liên quan