【问题标题】:Array Key with Space in laravellaravel中带空格的数组键
【发布时间】:2016-11-22 08:12:32
【问题描述】:

我使用{{$property.[Rent or Sale]}}{{$property[Rent or Sale]}} 来获取键Rent 或Sale 的值。

显示的是syntax error unexpected')' expected ']'

【问题讨论】:

  • 所以你的意思是说当你的键名用空格分隔时它会给出一个错误消息? @SaibalChakravarty
  • 是的@PassionInfinite

标签: php arrays laravel-5 laravel-5.2


【解决方案1】:

这个对我有用:config('menus.main_menu.Main\ Section') }}

因此,如果您尝试使用 \ 转义空格,它可能会起作用。

【讨论】:

    【解决方案2】:

    首先,根据PHP的最佳实践,我们应该永远不要使用空格 数组键。

    其次,这是由我和我的朋友 @curos 解决的。问题在于不正确的正则表达式将'or' 解释为default keyword。以下是有正则问题的方法。

         public function compileEchoDefaults($value)
         {
           return preg_replace('/^(?=\$)(.+?)(?:\s+or\s+)(.+?)$/s', 'isset($1) ? $1 : $2', $value);
         }
    

    更新如下:

         public function compileEchoDefaults($value)
         {
            return preg_replace('/^(?=\$)([^\'"]+?)(?:\s+or\s+)(.+?)$/s', 'isset($1) ? $1 : $2', $value);
         }
    

    上述方法在vendor/laravel/framework/src/compilers/BladeCompiler.php

    这个更新的正则表达式不会将'or' 解释为keyword

    请看:这个错误已经被 laravel 修复了

    【讨论】:

      【解决方案3】:

      您的语法错误,您必须像这样写 {{$property.Rent}} {{$property.Sale}}

      【讨论】:

        【解决方案4】:

        尝试这样使用。

        <td> <? echo $user->{'Rent or Sale'}; ?> </td>

        【讨论】:

          猜你喜欢
          • 2017-03-16
          • 1970-01-01
          • 2018-09-17
          • 2012-04-18
          • 2017-01-05
          • 2013-04-17
          • 2010-12-16
          • 2021-01-24
          • 2012-07-02
          相关资源
          最近更新 更多