【问题标题】:php - syntax error, unexpected T_DOUBLE_ARROW [duplicate]php - 语法错误,意外的 T_DOUBLE_ARROW [重复]
【发布时间】:2013-12-20 08:20:11
【问题描述】:

我怎样才能摆脱这个错误??

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);

非常感谢您的帮助...

【问题讨论】:

  • "mem"=>$str
  • 来自其他数组的变量字符串值,我在其中添加了一些字符串...

标签: php syntax


【解决方案1】:

讨厌看到人们使用 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);

【讨论】:

    【解决方案2】:

    错误是有效的:

    意外的'=>' (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[] = 因为这样就没有调用函数的开销。

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多