刀片 php 中的 Laravel 打印数组


Laravel print array in blade php

我想在我的 .blade.php 中显示一个数组,但它无法正常工作,所以我的控制器看起来像这样:

class WatchController extends Controller
{
    public function index()
    {
        $watchFolderPath = 'C:''xampp''htdocs''Pro''rec''';
        $watchFolder     = $this->dirToArray($watchFolderPath);
        return view('watch.new')->with('watchFolder', $watchFolder);
    }
    # Get Directories of Path as Array
    function dirToArray($dir) {
        $result = array();
        $cdir = scandir($dir);
        foreach ($cdir as $key => $value)
        {
            if (!in_array($value,array(".","..")))
            {
                if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
                {
                    $result[$value] = $this->dirToArray($dir . DIRECTORY_SEPARATOR . $value);
                }
                else
                {
                    $result[] = $value;
                }
            }
        }
        return $result;
    }
}

在我的刀片里,我只是试图这样称呼它:

{{ $watchFolder }}

但它不起作用,我收到以下错误:

htmlentities() 期望参数 1 为字符串,给定数组

编辑:我得到的数组显示目录中带有子文件夹的所有文件夹/文件。(使用DD())

目前它看起来像这样:

array:6 [▼
  123123 => array:2 [▼
    "subfolder1" => array:1 [▼
      0 => "video.mpg"
    ]
    "subfolder2" => array:1 [▶]
  ]
  789 => array:2 [▶]
  "folder1" => array:2 [▶]
  "folder2" => array:2 [▶]
  "folder3" => array:2 [▶]
  "folder1" => []
]

要在刀片中仅输出数组以进行调试,请执行以下操作:

        @php
            var_dump($arr);
        @endphp

然后使用前面提到的 foreach 循环。

从您的问题来看,似乎要输出数组以进行调试,正如我所评论的那样,您可以简单地在刀片模板中使用<?php?>标记。

<?php dd($array); ?>

但是,刀片具有原始输出标记对,该标记对{!!!!}

准备好显示目录结构的输出后,应将其分配给视图。

有 2 种快速方法可以将其与 Reflection; 在控制器内部使用:

class WatchController extends Controller
{
    public function index('Illuminate'Filesystem'Filesystem $filesystem)
    {
        $files = $filesystem->allFiles($watchFolderPath);
        // Your code.
        return view('name', ['files' => $files]);
    }
}

或者从容器中调用它:

class WatchController extends Controller
{
    public function index()
    {
        $files = app('files')->allFiles($watchFolderPath);
        // Your code.
        return view('name', ['files' => $files]);
    }
}

此外,您应该使用文件系统,无需重新发明轮子 - 您应该阅读手册。

你应该使用@foreach

@foreach ($watchFolder as $key => $value)
    Key: {{ $key }}    
    Value: {{ $value }} 
@endforeach

@foreach ($watchFolder as $w)
    {{ $w->name }}    
@endforeach

对于那些可能来找...喜欢我

echo implode("'n",$array);

否则,如果其多维数组

echo implode("'n",array_collapse($array));

您可以简单地使用 :

@dump($arr)

若要在刀片文件中输出$watchFolder数组,可以使用以下方法:

<pre><code>{{ json_encode($watchFolder, JSON_PRETTY_PRINT) }}</code></pre>

这将显示数组的格式良好的 JSON 版本,并使其更具可读性:

{
    "123123": {
        "subfolder1": [
            "video.mpg"
        ],
        "subfolder2": []
    },
    "789": [],
    "folder1": [],
    "folder2": [],
    "folder3": []
}

如果只需要在一行中显示JSON_PRETTY_PRINT,也可以将其删除:

{"123123":{"subfolder1":["video.mpg"],"subfolder2":[]},"789":[],"folder1":[],"folder2":[],"folder3":[]}