Пропустить индекс ключа из диапазона ключей массива в php - PullRequest
3 голосов
/ 06 мая 2019

Это только для массивов с индексным номером. Например, у меня есть эти массивы;

$array = [
  "0" => "number 1",
  "1" => "number 2",
  "2" => "number 3",
  "3" => "number 4",
  "4" => "number 5",
  "5" => "number 6",
  "6" => "number 7",
  "7" => "number 8",
  "8" => "number 9"
];

Я хочу пропустить цикл из определенного диапазона ключевых индексов, например, пропустить foreach, если номер индекса находится в диапазоне от 0 до 5. Это означает, что мы можем сделать именно так.

foreach($array as $key => $value){
   if(array_key_exist($key, range(0,5))
      continue;
   echo $value."<br/>"
}  

или мы можем использовать for... loop

for($ind = 0; $ind < count($array); $ind++){    
    if(array_key_exist($ind, range(0,5))
      continue;    
echo $arr[$ind]."<br/>" 
}

Как я могу пропустить индекс без использования продолжения или поиска в array_key сначала? Конечно, приведенный выше код выглядит хорошо для меня, но если у меня есть куча ключей и значений массивов, я думаю, что это не лучший выбор.

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Вы можете получить фрагмент массива от 5-го индекса до остальных,

$result = array_slice($array,5,count($array)-5, true);

array_slice - Извлечь фрагмент массива

Примечание :

array_slice () будет переупорядочивать и сбрасывать индексы целочисленных массивов по умолчанию.Это поведение можно изменить, установив preserve_keys в TRUE.Строковые ключи сохраняются всегда независимо от этого параметра.

Демо .

1 голос
/ 06 мая 2019

Вы можете использовать array_diff как:

$wantKeys = array_diff(array_keys($array), range(1,5));

Теперь все, что вам нужно, это цикл на $wantKeys как:

foreach($wantKeys as $k) 
    echo $array[$k]; // only wanted values 

Та же идея может быть достигнута с помощью array_diff_keys :

$wantKeys = array_diff_key($array, array_flip(range(1,5)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...