Получить все элементы в массиве, кроме первого..? (РНР)
есть ли способ указать получение всех, кроме первого элемента в массиве? Обычно я использую foreach() для перебора моих массивов.
скажем array (1,2,3,4,5), я бы хотел только 2, 3, 4 ,5 показать и пропустить 1.
4 ответов
Существует несколько способов решения проблемы.
первое решение-использовать флаг boolean для указания первого элемента и продолжить в вашем foreach
$firstElement = true;
foreach($array as $key => $val) {
if($firstElement) {
$firstElement = false;
} else {
echo "$key => $val\n";
}
}
если ваши элементы естественно проиндексированы численно, вам не нужен логический флаг, вы можете просто проверить, является ли ключ 0.
foreach($array as $key => $val) {
if($key === 0) continue;
echo "$key => $val\n";
}
второй способ-обмануть ваш путь в естественно численно индексированный массив, если это еще не так. Я будет использовать array_keys()
чтобы получить естественно численно индексированный массив ключей и зациклить его.
$keys = array_keys($array);
foreach($keys as $index => $key) {
if($index === 0) continue;
$val = $array[$key];
echo "$key => $val\n";
}
третий способ - использовать внутренний указатель массива, чтобы пропустить первый элемент, а затем продолжить цикл с помощью reset()
, next()
, list()
и each()
. производительность и ресурсоемкость, это лучший вариант. Ремонтопригодность страдает хотя.
reset($array); // Reset pointer to 0
next($array); // Advance pointer to 1
while (list($key, $val) = each($array)) {
echo "$key => $val\n";
}
если вы не против потерять первый элемент массива, вы можете array_shift()
его.
array_shift($array);
foreach($array as $key => $val) {
echo "$key => $val\n";
}
вы можете array_slice()
массив. Я также использую count()
для того чтобы иметь возможность установить preserve_keys
до true
.
$sliced = array_slice($array, 1, count($array)-1, true);
foreach($sliced as $key => $val) {
echo "$key => $val\n";
}
array_shift ()
http://us2.php.net/manual/en/function.array-shift.php
пример сайта:
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>
приведенный выше пример выведет:
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
**помните, что указатель на массив сбрасывается (новое значение) после смены
Ну, для этого может быть много способов, поскольку у нас есть много доступных функций манипуляции массивами. Однако для этого я использую следующий метод:
$orig_array = array(1, 2, 3, 4 ,5);
array_shift($orig_array);
print_r($orig_array);