【问题标题】:Parse error: syntax error, unexpected 'unset' (T_UNSET)解析错误:语法错误,意外的“未设置”(T_UNSET)
【发布时间】:2014-02-22 08:18:38
【问题描述】:

我正在使用简单的 php unset() 函数来删除和索引数组,但它显示以下错误:

Parse error: syntax error, unexpected 'unset' (T_UNSET)

这是我的错误代码:

echo $totalArray = unset($linkExtHelp[0]);

提前致谢。

【问题讨论】:

    标签: php syntax unset


    【解决方案1】:

    试试这个,unset($linkExtHelp[0]) 分配给变量echo $totalArray = 的原因 您不能将unset() 值分配给变量,您可以使用在取消设置之前和取消设置之后进行检查,如下所示。换句话说,unset 没有任何返回值,因为unset 是一个空值。 Void - 不向其调用者提供结果值。

    语法: void unset (mixed $var [, mixed $...])

    echo "Before unset: ".$linkExtHelp[0];
    unset($linkExtHelp[0]);
    $linkExtHelp = array_values($linkExtHelp);
    echo "After unset: ".$linkExtHelp[0];
    

    而不是

    echo $totalArray  =     unset($linkExtHelp[0]);
    

    【讨论】:

    • Nit: unset 不是函数。 real [void] 函数会导致不同的错误。
    • 我可以知道这段代码中的错误是什么:pastiebin.com/5d319d2506c52 我得到了同样的错误,比如(!)解析错误:语法错误,C:\wamp\ 中的意外'未设置'(T_UNSET) www\voice_bank\playlist_action.php 第 11 行
    【解决方案2】:

    unset 不返回值 - 它不能有意义地用作表达式,即使这样的产生式被接受。

    但是,解析错误是因为unset is a keyword和一个“特殊产生”:即使unset看起来像一个函数,它不是一个函数1。因此,unset 根据语言语法仅作为 语句2 有效。

    制作可以在zend_language_parser.y:

    309 unticked_statement:
           |   ..
    338    |   T_UNSET '(' unset_variables ')' ';'
    

    1 语法是由于历史设计选择造成的,从一致性的角度来看可能是一个错误:

    注意:因为[unset] 是一种语言结构而不是函数,所以不能使用变量函数调用它。

    2 还有“(未设置)强制转换”,但我在这里忽略了。

    【讨论】:

      【解决方案3】:

      您不能指定“未设置”。我就是这样做的。 你需要做一个临时数组。

       $totalArray  = $linkExtHelp; // assign it to a new array (so you can keep the original one )
      
       foreach ($totalArray  as $key => $value) {
       unset($totalArray  [$key]['save_day']); // if you need to remove all of 'save_day' value from multi array
       }
       var_dump($totalArray); // after unset
       var_dump($linkExtHelp); // the original array
      
      
       //echo $totalArray  =     unset($linkExtHelp[0]); // This is wrong. no echo
      

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        Unset 不返回任何内容,它是一个关键字。

        我假设您想重新索引数组,您可以使用array_values 来执行此操作

        试试这个:

        unset($linkExtHelp[0]);
        $totalArray = array_values($linkExtHelp);
        

        【讨论】:

        • 这增加了现有和已接受的答案所没有的什么?
        • @JasonAller 现有答案将使数组缺少第一个值,我的答案重新索引(重新分配值的键)
        猜你喜欢
        • 2013-10-11
        • 2023-03-18
        • 2012-06-17
        • 2015-05-11
        • 1970-01-01
        • 2015-02-24
        • 1970-01-01
        • 2015-01-09
        • 1970-01-01
        相关资源
        最近更新 更多