当前位置:Gxlcms > PHP教程 > 大侠求助,php报错,在线等。。。。。。

大侠求助,php报错,在线等。。。。。。

时间:2021-07-01 10:21:17 帮助过:2人阅读

each PHP

错误信息

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of each(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in D:\APMServ5.2.6\www\htdocs\base\admin\config.php on line 23

Parse error: syntax error, unexpected '[' in D:\APMServ5.2.6\www\htdocs\base\admin\config.php on line 23

错误位置代码
if ( $step == "modify" ){    $var = $_POST['var'];    do    {        $val = each( &$var )[1];//报错        $key = each( &$var )[0];//报错        if ( each( &$var ) )        {            $msql->query( "update {P}_base_config set value='{$val}' where variable='{$key}'" );        }    } while ( 1 );    sayok( $strConfigOk, "config.php", "" );}


回复讨论(解决方案)

为什么要这样写呢?
$val = each( &$var )[1];
$key = each( &$var )[0];
这样不行吗?
$val = each( $var )[1];
$key = each( $var )[0];

写作这样不是更好?
list($key, $val) = each( $var );

为什么要这样写呢?
$val = each( &$var )[1];
$key = each( &$var )[0];
这样不行吗?
$val = each( $var )[1];
$key = each( $var )[0];

写作这样不是更好?
list($key, $val) = each( $var ); 一这样环境就卡死了

没道理的!
你不能因为你的程序有问题就乱改一气

each( &$var ) 出错的原因是不能这样传递引用,这是 php 5.3 才有的约定
而 each( $var )[0] 这样的写法是 php 5.3 才有的

如果同时遵守 php 5.3 的语法规则就卡死,那你就要想想你的问题出在哪里了

没道理的!
你不能因为你的程序有问题就乱改一气

each( &$var ) 出错的原因是不能这样传递引用,这是 php 5.3 才有的约定
而 each( $var )[0] 这样的写法是 php 5.3 才有的

如果同时遵守 php 5.3 的语法规则就卡死,那你就要想想你的问题出在哪里了 哦,我的生产环境是php5.2.6的,这个按照list($key, $val) = each( $var );这样改就卡死了

do while(1) 无限循环没有退出的语句,为何会不卡?

那你 print_r($_POST['var']); 贴出结果

do while(1) 无限循环没有退出的语句,为何会不卡? 大侠求助,刚入门 如何退出

if ( each( &$var ) )
{
$msql->query( "update {P}_base_config set value='{$val}' where variable='{$key}'" );
break;
}
这样就能退出了

人气教程排行