热搜:NVER node 开发 php

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

2024-09-18 23:15:01
大侠求助,php报错,在线等。。。。。。

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;
        }
这样就能退出了