关于php:php – 语法错误,意外T_DOUBLE_ARROW

php - syntax error, unexpected T_DOUBLE_ARROW

本问题已经有最佳答案,请猛点这里访问。

我怎样才能消除这个错误??

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

PHP代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
            $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);

为了你的帮助…


我不喜欢看到人们使用数组推动-我知道这是合法的。在这种情况下,不能将key => value推到数组中,只需执行以下操作:

1
$datax['mem'] = $str;

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

edit

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

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

该错误实际上是:

unexpected '=>' (T_DOUBLE_ARROW)

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

您试图以一种非预期的方式使用该函数,因此当您执行PHP不允许的操作时,PHP会抛出一个错误。

因此,您不能按照自己的意愿使用这个函数,因此需要以不同的方式来处理它。这将很好地工作-在数组中附加一个新值(在本例中为$str

1
$datax['mem'] = $str;

您的数组$datax现在有了新的键mem,其(新)值为$str中的任何值。这种方法不仅管理起来更简单,而且开销也更少,因为您不使用函数调用-array_push()。访问php手册页面也会告诉您这一点。

If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.