我需要循环一个数组并回显前3个元素,但是我的问题是前3个不会总是在第一个父元素内。在下面的示例中,我需要获取内部元素'Items'的前3个
array(
0 => array(
'Items' => array(
0 => "dave",
1 => "steve"
)
),
1 => array(
'Items' => array(
0 => "megan"
)
)
)
在该示例中,预期结果将回响 戴夫 史蒂夫 梅根
非常感谢! :)
答案 0 :(得分:0)
这将打印出正确的输出:
$array = array(
0 => array(
'Items' => array(
0 => "dave",
1 => "steve"
)
),
1 => array(
'Items' => array(
0 => "megan"
)
)
);
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
for($i = 0; $i < 3; $i++) {
$it->next();
$value = $it->current();
echo $value, " ";
}
答案 1 :(得分:0)
对于小型数组,您可以使用array_walk_recursive
:
$output = array();
array_walk_recursive($array, function ($value, $key, $elements) {
if (count($elements) < 3) {
$elements[] = $value;
}
}, $output);
然而,对于大$array
,这将是不必要的慢,因为它遍历整个数组只是为了得到前3个元素。在这种情况下,您可以自己实施步骤:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$output = array();
while (count($output) < 3 && $iterator->valid()) {
$iterator->next();
$output[] = $iterator->current();
}
答案 2 :(得分:0)
这是我的代码:
<?php
$arr = array( 0 => array('Items' => array(0 => "dave",1 => "steve")),1 => array('Items' => array(0 => "megan")));
$out = '';
$c = 0;
foreach($arr as $all_items) {
foreach($all_items['Items'] as $ne_items) {
$out .= $ne_items.' ';
$c++;
if($c == 3) {
break;
}
}
if($c == 3) {
break;
}
}
echo $out;