1

我需要遍历一个数组并回显前 3 个元素,但是我的问题是前 3 个不会总是在第一个父元素中。在下面的示例中,我需要获取内部元素“Items”的前 3 个

array(
    0 => array(
        'Items' => array(
            0 => "dave",
            1 => "steve"
        )
    ),
    1 => array(
        'Items' => array(
            0 => "megan"
         )
    )
)

在该示例中,预期结果将与 Dave Steve Megan 相呼应

非常感激!:)

4

3 回答 3

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, " ";
}
于 2013-10-16T10:43:29.757 回答
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();
}
于 2013-10-16T10:43:54.363 回答
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;
于 2013-10-16T10:48:08.267 回答