Chào.
Tôi có một mảng như vậy:
$validServices = (array [29])
$validSerices[0] = (array [1])
$validServices[0][0] = stdClass [16]
$validServices[0][0]->service_id = (string [1]) `1`
$validServices[0][0]->title = (string [10]) `Management`
…
$validServices[1] = (array [1])
$validServices[1][0] = stdClass [16]
$validServices[1][0]->service_id = (string [1]) `2`
$validServices[0][0]->title = (string [7]) `Systems`
…
Tôi muốn lặp lại các dịch vụ chỉ đơn giản là lặp lại trên màn hình (đây là một phần của mẫu trang web) “tiêu đề” vì vậy tôi kết thúc bằng:
Sự quản lý
hệ thống
Dữ liệu là từ một bảng SQL và tôi làm không phải biết trước sẽ có bao nhiêu dịch vụ.
Tôi đánh giá cao một số trợ giúp về mã cho vòng lặp đó. Một diễn đàn, tôi đoán vậy?
Chúc mừng.
Lớp RecursiveArrayIterator
Sử dụng RecursiveArrayIterator để duyệt qua một lượng mảng phụ không xác định trong mảng bên ngoài. Lưu ý: Chức năng này đã được cung cấp bằng cách sử dụng RecursiveIteratorIterator nhưng rất hữu ích trong việc hiểu cách sử dụng trình vòng lặp khi sử dụng lần đầu tiên vì tất cả các thuật ngữ đều khá khó hiểu ngay từ cái nhìn đầu tiên về SPL!
<?php
$myArray = array(
0 => 'a',
1 => array('subA','subB',array(0 => 'subsubA', 1 => 'subsubB', 2 => array(0 => 'deepA', 1 => 'deepB'))),
2 => 'b',
3 => array('subA','subB','subC'),
4 => 'c'
);
$iterator = new RecursiveArrayIterator($myArray);
iterator_apply($iterator, 'traverseStructure', array($iterator));
function traverseStructure($iterator) {
while ( $iterator -> valid() ) {
if ( $iterator -> hasChildren() ) {
traverseStructure($iterator -> getChildren());
}
else {
echo $iterator -> key() . ' : ' . $iterator -> current() .PHP_EOL;
}
$iterator -> next();
}
}
?>
The output from which is:
0 : a
0 : subA
1 : subB
0 : subsubA
1 : subsubB
0 : deepA
1 : deepB
2 : b
0 : subA
1 : subB
2 : subC
4 : c
1 lượt thích
Cấu trúc dữ liệu đó phải được xây dựng chứ không phải trực tiếp từ truy vấn sql. Cấu trúc siêu xấu.
foreach($validServices as $service){
foreach($service as $service_characteristics){
foreach($service_characteristics as $key => $value){
echo "{$key}: {$value}\n";
}
}
}