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