【问题标题】:How to display a readable array - Laravel如何显示可读数组 - Laravel
【发布时间】:2014-01-13 07:22:07
【问题描述】:

写完之后:

Route::get('/', function()
{
    dd(User::all());
});

刷新浏览器后,我得到一个不可读的数组。有没有办法以可读格式获取该数组?

【问题讨论】:

  • <pre>ARRAY_DUMP_CODE</pre>标签环绕你的数组输出

标签: php arrays function laravel readable


【解决方案1】:

dd() 转储变量并结束脚本 (1) 的执行,因此用<pre> 标记将其包围会使其损坏。只需使用好的 ol' var_dump()(或 print_r(),如果你知道它是一个数组)

Route::get('/', function()
{
    echo '<pre>';
    var_dump(User::all());
    echo '</pre>';
    //exit;  <--if you want
});

更新:

我认为你可以通过让 Laravel 将模型对象转换为数组来格式化显示的内容:

Route::get('/', function()
{
    echo '<pre>';
    $user = User::where('person_id', '=', 1);
    var_dump($user->toArray()); // <---- or toJson()
    echo '</pre>';
    //exit;  <--if you want
});

(1) 记录一下,这是dd()的实现:

function dd()
{
    array_map(function($x) { var_dump($x); }, func_get_args()); die;
}

【讨论】:

  • 这确实给出了一个可读数组:) 另一个问题是它给出了一个非常大的数组,而我需要的信息位于页面底部。
  • 嗯,你想要什么信息?您可以转储其他方法以过滤到您实际需要的内容。 User::all() 确实返回整个对象
  • 我只想要用户对象的数组。我在我的路线中给出了这个: User::find(6)->where('person_id' == 1) 并且页面给了我一个以“Illuminate\Database\Eloquent\Builder Object (..." I必须一直向下滚动才能获取 User 对象的数组。
  • 尝试让 Lravel 转换为数组,查看更新的答案
  • 我认为 where() 语法不准确。我几乎从不使用 Eloquent,我不得不承认(总是更喜欢查询生成器))
【解决方案2】:

实际上,获取您(可能)希望看到的可读数组的一种更简单的方法是,而不是使用

dd($users); 

dd(User::all());

使用这个

dd($users->toArray());

 dd(User::all()->toArray());

使用它进行调试要好得多。

编辑 - 另外,这在您的视图/模板中也很有效 因此,如果您将 get all users 传递给您的模板,则可以将其转储到您的刀片模板中

{{ dd($users->toArray()) }}

【讨论】:

  • 这是在 Laravel 中正确(并且更好)的方式。
【解决方案3】:

也许试试 kint:composer 需要 raveren/kint "dev-master" 更多信息:Why is my debug data unformatted?

【讨论】:

    【解决方案4】:

    您可以在 view.blade 上使用此代码。 {{var_dump($animales)}}

    【讨论】:

    • 用更多的细节解释你的建议
    【解决方案5】:

    您可以通过控制器功能在 Blade 模板上使用 var_dumpprint_r 功能:

    class myController{
    
       public function showView(){
         return view('myView',["myController"=>$this]);
       }
       public function myprint($obj){
         echo "<pre>";
         print_r($obj);
         echo "</pre>";
       }
    }
    

    并使用您的刀片模板:

    $myController->myprint($users);
    

    【讨论】:

      【解决方案6】:

      对于仍在寻找实现此目标的好方法的每个人,推荐的方法是来自symfony/var-dumperdump() 函数。

      从 5.2 版开始添加到文档中: https://laravel.com/docs/5.2/helpers#method-dd

      【讨论】:

      • 应该是答案
      【解决方案7】:

      我在 Laravel 中添加了一个助手 da(),它实际上是 dd($object-&gt;toArray()) 的别名

      这里是要点:https://gist.github.com/TommyZG/0505eb331f240a6324b0527bc588769c

      【讨论】:

        【解决方案8】:

        按照建议,您可以使用“死并转储”,例如

        dd($var)

        或者只是“转储”,不会死,

        dump($var)

        【讨论】:

          【解决方案9】:

          奇怪的是没有人指出 Symfony VarDumper,只需这样做:

          \Symfony\Component\VarDumper\VarDumper::dump($data);
          

          【讨论】:

            猜你喜欢
            • 2016-01-23
            • 1970-01-01
            • 2016-09-04
            • 2015-08-03
            • 2011-07-20
            • 1970-01-01
            • 2021-09-19
            • 1970-01-01
            • 2020-09-03
            相关资源
            最近更新 更多