如何检测 foreach 循环中的第一个和最后一个元素


How can I detect the first and the last element inside a foreach loop?

我想检测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

不需要 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

这很好用。

$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;
}

获取数组的长度。

获取一个计数器并将其递增。

在循环中:

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);
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

问候!

试试这个

<?php
  $path = "monkey/cat/horse";
  $arr = explode("/", $path);

$data= $arr;
echo end($data);  //last value
echo reset($data);  //firast value
?>