刀片php中的Laravel打印阵列

Joh*_*acy 9 php arrays laravel blade

我想在我的.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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的刀片中,我只是试着这样称呼它:

{{ $watchFolder }}
Run Code Online (Sandbox Code Playgroud)

但它没有用,我收到以下错误:

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" => []
]
Run Code Online (Sandbox Code Playgroud)

Ale*_*nin 8

你应该使用@foreach

@foreach ($watchFolder as $key => $value)
    Key: {{ $key }}    
    Value: {{ $value }} 
@endforeach
Run Code Online (Sandbox Code Playgroud)

或者

@foreach ($watchFolder as $w)
    {{ $w->name }}    
@endforeach
Run Code Online (Sandbox Code Playgroud)


ash*_*ash 8

从您的问题看来,似乎您想要输出数组用于调试目的,正如我所评论的那样,您只需在刀片模板中使用<?php?>标记即可.

<?php dd($array); ?>
Run Code Online (Sandbox Code Playgroud)

但是,刀片有一个原始输出标签对,它是{!!!!}.

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

使用Reflection有2种快速使用方法; 在你的控制器内:

class WatchController extends Controller
{
    public function index(\Illuminate\Filesystem\Filesystem $filesystem)
    {
        $files = $filesystem->allFiles($watchFolderPath);

        // Your code.

        return view('name', ['files' => $files]);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者从容器中调用它:

class WatchController extends Controller
{
    public function index()
    {
        $files = app('files')->allFiles($watchFolderPath);

        // Your code.

        return view('name', ['files' => $files]);
    }
}
Run Code Online (Sandbox Code Playgroud)

你也应该使用Filesystem,不需要重新发明轮子 - 你应该阅读手册.


And*_*rew 5

仅在刀片中输出阵列以进行调试:

        @php
            var_dump($arr);
        @endphp
Run Code Online (Sandbox Code Playgroud)

然后使用如上所述的foreach循环。


小智 5

对于那些可能看起来像我一样的人

echo implode("\n",$array);
Run Code Online (Sandbox Code Playgroud)

否则如果它的多维数组

echo implode("\n",array_collapse($array));
Run Code Online (Sandbox Code Playgroud)