从多暗阵列中获取前3个项目

时间:2013-10-16 10:37:48

标签: php

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

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

在该示例中,预期结果将回响     戴夫     史蒂夫     梅根

非常感谢! :)

3 个答案:

答案 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;