错误信息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 23Parse 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", "" );
}eachPHP

解决方案 »

  1.   

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

  2.   

    没道理的!
    你不能因为你的程序有问题就乱改一气each( &$var ) 出错的原因是不能这样传递引用,这是 php 5.3 才有的约定
    而 each( $var )[0] 这样的写法是 php 5.3 才有的如果同时遵守 php 5.3 的语法规则就卡死,那你就要想想你的问题出在哪里了
      

  3.   

    哦,我的生产环境是php5.2.6的,这个按照list($key, $val) = each( $var );这样改就卡死了
      

  4.   

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

  5.   

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

  6.   

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