PHP内置计数器可用于确定当前在foreach循环中的迭代次数。

3

我有一个关联数组,有两个维度。我正在通过以下方式进行迭代:

foreach ( $order_information as $sector_index => $sector_value ){
echo 'sector : ' . current($order_information) ;
echo '<br>';
    foreach ( $sector_value as $line_index => $line_value ){

    }
}

current()函数尝试获取循环中的迭代次数。 看起来像这样 可以实现此功能。然而,在该页面的其他地方,建议只需执行以下操作:

$index = 0
foreach ( $array as $key => $val ) {
    echo $index;
    $index++;
} 

我在想我是否错误地使用了current函数,因为echo 'sector : ' . current($order_information);只打印出sector : Array

$index++是错误的语法吗?有更好的方法吗?


1
current()函数会返回数组内部指针所指向的元素。它不会返回索引值。正确的做法是使用计数器,就像你在第二个例子中所做的那样。不,$index++没有任何问题。如果你能提供$order_information数组的实际样式,那也会有所帮助。 - NullUserException
$index++ 不是错误的语法,它是 $index = $index + 1 的简写方式。 - Jared
1个回答

4

答案

据我所知,在PHP的foreach循环中没有内置的数字计数器。

因此,您需要使用自己的计数器变量。您的示例代码看起来非常适合这样做。

$index = 0;
foreach($array as $key => $val) {
    $index++;
}

顺便说一下,$index++; 是合适的。

示例

下面是一个示例,说明哪个变量存储哪个值。

$array = array(
    "first"  => 100,
    "secnd" => 200,
    "third"  => 300,
);

$index = 0;
foreach($array as $key => $val) {
    echo "index: " . $index . ", ";
    echo "key: "   . $key   . ", ";
    echo "value: " . $val   . "\n";
    $index++;
}

输出结果将是这个。
index: 0, key: first, value: 100
index: 1, key: secnd, value: 200
index: 2, key: third, value: 300

Current-Function

我认为你误解了current($array)。它会返回内部数组指针所指向的值,这个指针可以通过next($array)prev($array)end($array)来移动。

查看手册以澄清问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接