PHP: как пропустить последний элемент в цикле foreach [дубликат]
этот вопрос уже есть ответ здесь:
У меня есть массив объектов, любой массив в PHP. Как пропустить последний элемент в итерации foreach?
5 ответов
используйте переменную, чтобы отслеживать, сколько элементов было повторено до сих пор и сократить цикл, когда он достигнет конца:
$count = count($array);
foreach ($array as $key => $val) {
if (--$count <= 0) {
break;
}
echo "$key = $val\n";
}
Если вы не заботитесь о памяти, вы можете перебрать сокращенную копию массива:
foreach (array_slice($array, 0, count($array) - 1) as $key => $val) {
echo "$key = $val\n";
}
есть различные способы сделать это.
Если Ваш массив является последовательно нулевым индексированным массивом, вы можете сделать:
for( $i = 0, $ilen = count( $array ) - 1; $i < $ilen; $i++ )
{
$value = $array[ $i ];
/* do something with $value */
}
Если Ваш массив является ассоциативным массивом или иным образом не последовательно нулевым индексированным, вы можете сделать:
$i = 0;
$ilen = count( $array );
foreach( $array as $key => $value )
{
if( ++$i == $ilen ) break;
/* do something with $value */
}
Если вы не хотите удалять последнюю запись массива с помощью pop, вы можете пропустить ее следующим образом
$array = array('v1','v2','v3',...)
$counter = 1;
foreach($array as $value)
{
//do your thing in loop
if($counter == count($array)) continue; // this will skip to next iteration if last element encountered.
$counter++;
}
$count = count($array);
$i=0;
foreach ($arr as &$value)
{
$i++;
if($i==($count-1))
{
echo 'skip';
}
else
{
echo $value;
}
}
то, что вы пытаетесь сделать, победит цель цикла foreach. Он предназначен для петли через весь массив и сделать нашу работу легкой.
например: вы можете получить размер массива, используя графа функция в php, а затем может использовать для цикла и установить предел arraysize-2, поэтому последний массив будет опущен