Я хочу обнаружить первый и последний элемент внутри цикла foreach:
$path = "monkey/cat/horse";
foreach(explode('/', $path) as $segment) {
echo $segment;
}
Мой желаемый результат:
first:monkey
last:horse
Вот как я пытался это решить:
$path = "monkey/cat/horse";
$explode = explode('/', $path);
foreach($explode as $segment) {
if (current($explode) == $segment){
echo "first:".$segment;
} echo "<br>";
if (end($explode) == $segment){
echo "last:".$segment;
}
}
Но мой результат:
first:horse
last:horse
5 ответов
Нет необходимости в цикле foreach, просто используйте цикл foreach
и count
. цикл foreach возвращает массив.
$path = "monkey/cat/horse";
$arr = explode("/", $path);
$count = count($arr);
foreach($arr as $key => $value){
if($key == 0) echo "first:".$value;
elseif($key == ($count - 1)) echo "last:".$value;
}
Результат
first:monkey
last:horse
Попробуй это
<?php
$path = "monkey/cat/horse";
$arr = explode("/", $path);
$data= $arr;
echo end($data); //last value
echo reset($data); //firast value
?>
У вашего кода есть только небольшая проблема, попробуйте изменить текущую функцию с помощью функции сброса. Как это:
$path = "monkey/cat/horse";
$explode = explode('/', $path);
foreach($explode as $segment) {
if (reset($explode) == $segment){
echo "first: $segment";
}
echo "<br>";
if (end($explode) == $segment){
echo "last: $segment";
}
}
Вот справка о функции "сброса": http://php.net/manual/es/function.reset.php
С уважением!
Получить длину массива.
Получите счетчик и увеличьте его по foreach.
В петле:
1) если счетчик равен 0
, его первый элемент.
2) Если счетчик равен счету массива минус один, это последний элемент.
<?php
$path = "monkey/cat/horse";
$explode = explode('/', $path);
$len = count($explode);
$i=0;
foreach($explode as $segment) {
if ($i == 0) {
echo "first: ".$segment;
echo "<br/>";
}
if ($i == ($len-1)) {
echo "last: ".$segment;
}
++$i;
}
?>
Выход:
first: monkey
last: horse
Это прекрасно работает.
$path = "monkey/cat/horse";
$explode = explode('/', $path);
echo "first:".current($explode);
echo "<br>";
echo "last:".end($explode);
С ПЕТЛЕЙ:
$path = "monkey/cat/horse";
$explode = explode('/', $path);
$cont = 0;
foreach($explode as $segment) {
if ($cont == 0){
echo "first:".$segment;
}
echo "<br>";
if ($cont > count($segment)){
echo "last:".$segment;
}
$cont = $cont +1;
}
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.