php - 语法错误,意外T_DOUBLE_ARROW

时间:2013-12-04 01:50:51

标签: php syntax

我怎么能摆脱这个错误?

Parse error: syntax error, unexpected T_DOUBLE_ARROW in /var/www/core/restvt.api.php on line 35

PHP代码:

            $datax = Array();

    foreach ($inis as $key => $data){

        if ($data=="mem"){
            $str = number_format($ARRAY[(array_search($data.':',$ARRAY)+2)]/1024,0,',','.')." MB [ ".number_format(($ARRAY[(array_search($data.':',$ARRAY)+2)]/$ARRAY[(array_search($data.':',$ARRAY)+1)])*100,0,',','.')." % ]";
            array_push($datax, "mem"=>$str); //error here, why?
        }else{
        array_push($datax,$data=>$ARRAY[(array_search($data.':',$ARRAY)+1)]);
        }
    }

        $jsonr = json_encode($datax);
很抱歉......

2 个答案:

答案 0 :(得分:12)

讨厌看到人们使用array_push - 我知道这是合法的。在这种情况下,你不能推送 key => value到你的数组,只需这样做:

$datax['mem'] = $str;

手动:http://php.net/manual/en/function.array-push.php

  

修改

如果您坚持使用array_push类型方法,则需要使用新的键值对创建一个新数组,然后使用array_merge加入它们:

$new_data = array('mem' => $str);
$datax = array_merge($datax, $new_data);

答案 1 :(得分:8)

错误有效:

  

意外'=>' (T_DOUBLE_ARROW)

这意味着PHP不期望这些字符=> 您只能按预期使用PHP预定义函数,您可以在php.net上找到准确的文档 有关您的功能,请参阅此处:http://php.net/manual/en/function.array-push.php

您正试图以不想要的方式使用该函数,因此当您执行PHP不允许的操作时,PHP会抛出错误。

因此您无法按照自己的意愿使用该功能,因此需要采用不同的方式 这样可以正常工作 - 将新值(在本例中为$str)附加到数组中:

$datax['mem'] = $str;

您的数组$datax现在有新密钥mem,其中(新)值为 $ str 中的任何值。
这种方法不仅管理起来更简单,而且由于您没有使用函数调用,因此它的开销更少 - array_push()。 访问PHP手册页也可以告诉你。

  

如果使用array_push()向数组中添加一个元素,最好使用$ array [] =因为这样就没有调用函数的开销。