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

ここに私のコード:

    <?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 に答える
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 つの要素を取得するためだけに配列全体をループするため、これは不必要に遅くなります。その場合、自分で walk を実装できます。

$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 に答える