PHP: як зрабіць Еогеасп і пачаць з шостага элемента калекцыі?

гэта магчыма, каб пачаць цыкл Еогеаспа ад канкрэтнага элемента [шосты элемент]?

ім з дапамогай гэтага кода:

    <?php
    $num=1;
    foreach($temp_row as $key => $value) {

        echo $num;

        $num++;
    }
    ?>

дзякуй :)

5

8 адказы

You can use for example array_slice()

$num = 5; //it will start from sixth element

foreach(array_slice($temp_row, $num) as $key => $value) {

     echo $key.'=>'.$value.'
'; }
16
дададзена
дзякуй @Robert .. гэта дапамагае!
дададзена аўтар iamnards, крыніца
Лёгка і працуе :) вы гасцінна.
дададзена аўтар Robert, крыніца

Не непасрэдна з Еогеасп() . Ключ знаходзіцца ў кожны частка імя. Ён перабірае ўсе элементы .

Так як мы можам дасягнуць гэтага?

Вы заўсёды можаце проста мець , калі() пункт ўнутры цыклу, які правярае значэнне ключа, перш чым рабіць астатнюю частку працы.

Але калі гэта не выканальна для вас, па нейкай прычыне, я прапанаваў бы выкарыстаць FilterIterator для дасягнення гэтай мэты.

<�Код> FilterIterator гэта стандартны PHP клас, які можна пашырыць, каб стварыць свае ўласныя фільтры. Итератора можа быць затым петельным з выкарыстаннем стандарта Еогеасп() контур, падбіраючы толькі тыя запісы, якія прымаюцца з дапамогай фільтра.

Ёсць некалькі прыкладаў на старонцы кіраўніцтва звязаны вышэй, што дапаможа, але вось хуткі прыклад я кінуў разам для вас:

class SkipTopFilter extends FilterIterator {
    private $filterNum = 0;
    public function __construct(array $array, $filter) {
        parent::__construct(new ArrayIterator($array));
        $this->filterNum = $filter;
    }
    public function accept() {
        return ($this->getInnerIterator()->key() >= $this->filterNum);
    }
}

$myArray = array(13,6,8,3,22,88,12,656,78,188,99);
foreach(new SkipTopFilter($myArray, 6) as $key=>$value) {
    //loop through all records except top six.
    print "rec: $key => $value
"; }

Выпрабавана; выхады:

rec: 6 => 12
rec: 7 => 656
rec: 8 => 78
rec: 9 => 188
rec: 10 => 99
6
дададзена

Вы маглі б прапусціць, калі лічыльнік не шосты элемент ...

<?php
$num=0;
foreach($temp_row as $key => $value) {
    if( ++$num < 6 )
    {
        continue;
    }
    echo $num;
}
?>
2
дададзена
ня бліскучае рашэнне ... што калі ёсць тысячы і тысячы прадметаў, якія павінны быць прапушчаны?
дададзена аўтар STT LCU, крыніца
ды - ці не лепш, калі вы прапускаеце шмат больш дэталяў, але невялікія наборы яго не збіраецца быць болем. заўсёды кампраміс з такога роду рэчы.
дададзена аўтар Ian Wood, крыніца

Або з цыкл

$num = 1;
for($i=5; $i<= count($temp_row), $i++) {
   echo $num;
   $num++;
}
2
дададзена
яна можа быць унутры, для ($ I = 5, $ CNT = Count ($ temp_row); $ I <= $ НКТ ++ $ я) ;)
дададзена аўтар Robert, крыніца
было б лепш, каб вылічыць лічыльнік ($ temp_row) па-за для цыклу
дададзена аўтар STT LCU, крыніца

паспрабуйце гэты код:

$new_temp_row = array_slice($temp_row, 5);

foreach($new_temp_row as $key => $value) {
    echo $value;
}
1
дададзена
$i = 1;
fабоeach ($temp_row as $key => $value) {
    if (($num = $i++) < 6) continue;
   //Do something
}

або

fабо ($i = 0; $i < 5; $i++) next($temp_row);
while(list($key, $value) = each($temp_row)) {
   //Do something 
}
0
дададзена

Я прапаную вам выкарыстоўваць для погляду замест таго, каб для кожнага. Вы можаце атрымаць доступ і ключ і значэнне, якія знаходзяцца ў становішчы я ўнутры вашага цыкла.

<?php
$num = 1;
$keys = array_keys( $temp_row );
for( $i = 5; $i < count( $temp_row ); $i++ ) {
            $key = $keys[$i];
            $val = $temp_row[$i];
    echo $i;
}
?>
0
дададзена

Вы можаце стварыць новы масіў з неабходнай часткай дадзеных масіва паходжання і працы з ім:

$process = array_slice ($temp_row, 5);
foreach($process as $key => $value) {

    //TODO Your logic
}

Ці вы можаце Скіп першага SIEL элементаў, якія ўваходзяць:

<?php
$num=1;
foreach($temp_row as $key => $value) {
    if ($num < 6) {
         $num++;
         continue;
    }
    //TODO Your logic
}
?>
0
дададзена
проста ... проста выдаліць другi сказ. што, калі ён павінен быў прапусціць 100000 элементы?
дададзена аўтар STT LCU, крыніца