if ( is_array( $u ) ) {
while( list( $key ) = each( $u ) ) {
$u = $u[$key];
break;
}
}
并且我的php版本是7.2 当我在laravel框架上运行它时,我遇到了这个错误
The each() function is deprecated. This message will be suppressed on further calls
我发现多数民众赞成我必须将每个更改为foreach enter link description here
告诉任何人将代码更改给我,以便在php 7.2上工作
答案 0 :(得分:4)
if (is_array($u)) {
foreach ($u as $k => $v) {
$u = $u[$k]; // or $v
break;
}
}
但是$u
将始终是数组的第一个值,因此我看不到您需要它的位置。您只需执行$u = $u[0];
答案 1 :(得分:4)
while( list( $key ) = each( $u ) ) {
$u = $u[$key];
break;
}
绝对没有理由在这里进行循环。您只是从数组中获取第一个值并覆盖该数组。可以使用current()将上述循环重写为一行,这将从数组中拉出当前值(如果未更改数组指针,则为第一个值):
$u = current($u);
答案 2 :(得分:3)
正如PHP7.2所说,我建议使用foreach()
函数替代不推荐使用的each()
。在这里,我列举了一些可以在Wordpress中运行的示例。
(OLD) while ( list( $branch, $sub_tree ) = each( $_tree ) ) {...}
(NEW) foreach ( (Array) $_tree as $branch => $sub_tree ) {...}
(OLD) while ( $activity = each( $this->init_activity ) ) {...}
(NEW) foreach ( $this->init_activity as $activity ) {...}
请阅读: