8

是否可以在 foreach 中增加 php 变量?我知道如何通过在外部声明来循环。

我正在寻找类似下面的语法

foreach ($some as $somekey=>$someval; $i++)
{

}
4

10 回答 10

41

不,你必须使用

$i = 0;
foreach ($some as $somekey=>$someval) {
    //xyz
    $i++;
}
于 2012-06-15T09:40:24.637 回答
5
foreach ($some as $somekey=>$someval)
{
     $i++;


}
于 2012-06-15T09:39:16.617 回答
2

懒惰的做法是:

{
    $i=1;
    foreach( $rows as $row){
        $i+=1;
    }
}

,但是您必须在 foreach 之后将 $i 范围限定为不存在或最后取消设置它

$i=1;
foreach( $rows as $row){
    $i+=1;
}
unset($i);

,但你应该使用 for 循环,因为利奥波德写道。

于 2017-08-31T13:13:54.157 回答
1
$dataArray = array();
$i = 0;
foreach($_POST as $key => $data) {
    if (!empty($data['features'])) {
        $dataArray[$i]['feature'] = $data['features'];
        $dataArray[$i]['top_id'] = $data['top_id'];
        $dataArray[$i]['pro_id'] = $data['pro_id'];
    }
    $i++;
}
于 2014-09-30T10:07:07.010 回答
1

我知道这是一个旧的,但这些是我的想法。

$some = ['foo', 'bar'];

for($i = 0; $i < count($some); $i++){
 echo $some[$i];
}

--更新--

$some = ['foo', 'bar'];
$someCounted = count($some);

for($i = 0; $i < $someCounted; $i++){
 echo $some[$i];
}

它将实现您首先要寻找的东西。
然而你必须增加你的索引 $i。
因此,它不会为您节省任何打字时间。

于 2017-05-21T20:02:33.350 回答
0

这会成功的!请记住,如果要从 0 开始计数/递增,则必须在 foreach 循环之前定义 $i = 0。

$i = 0;
foreach ($some as $somekey=>$someval) {
    $i++;
}
于 2014-05-14T09:25:56.910 回答
0

有什么理由不使用

foreach ($some as $somekey=>$someval)
{
$i++;
}

?

于 2012-06-15T09:39:17.083 回答
0
foreach ($some as $somekey=>$someval)
{
    $i++;
}
于 2012-06-15T09:39:25.603 回答
0
foreach ($some as $somekey=>$someval)
{
 $i++;
}

我只是一个变量。即使它用于迭代您正在使用的任何项目,它仍然可以像其他任何项目一样进行修改。

于 2012-06-15T09:41:15.887 回答
0

不幸的是,这是不可能的。我一直在寻找一种优雅的方式来做到这一点,与此非常相似:

for ($k = 0 ; $k < $columns; $k++){ echo '<td></td>'; }

这适用for于 PHP 中的功能,但是您必须拉取项目,例如$columns[$k],然后您又回到了不太理想的情况。

参考

于 2022-03-04T17:29:39.463 回答