我要说的是,我有一系列的PHP阵列,代表了像以下那样的多重结构:
array:5 [▼
0 => array:2 [▼
"size" => "9.8 MiB"
"name" => "Game.exe"
]
1 => array:2 [▼
"size" => "3.9 MiB"
"name" => "Launcher.exe"
]
2 => array:2 [▼
"size" => "2 MiB"
"name" => "USRDIR/mask.mpk"
]
3 => array:2 [▼
"size" => "1 MiB"
"name" => "USRDIR/subs.hrt"
]
4 => array:2 [▼
"size" => "10 MiB"
"name" => "USRDIR/fullhd/footage.mkv"
]
我愿利用无顺序排列的名单,以超文本形式展示这一信息,例如:
<ul class="root-folder">
<ul class="folder"><span>FOLDERNAME</span>
<ul class="folder"><span>FOLDERNAME</span>
<li class="file">FILENAME</li>
</ul>
<li class="file">FILENAME</li>
<li class="file">FILENAME</li>
<ul>
<li class="file">FILENAME</li>
<li class="file">FILENAME</li>
</ul>
前2个阵列的名值是用以下格式拼写的:“档案名称:档案集延”,意思是这些档案根植。 对于这些内容,我只能扔下一个<代码><li>元素,显示其在主编<代码><ul>内的数值。 然而,第三阵列的名称价值是“文件夹/档案集”,意思是,为了直观地反映这一点,我必须制作一个新的<代码><ul>,其中新文件载于<li>
内容。 也有这样的事实,即如果这些夹中有1个以上档案,那么这些阵列将多倍地点名。 之后,最后一批文件在档案前有两倍。 我的同仁会看着什么,我是在控制器中这样做的,通过一个阵列,以显示,或者在布莱德模板中仅仅通过原来的阵列?
现在,这只是我所损失的:
Controller:
$fileArray = [];
foreach ($files as $key => $file) {
array_push($fileArray, $file);
$fileArray[$key][ size ] = formatBits($file[ size ]);
$fileArray[$key][ name ] = explode( / , $file[ name ]);
}
return view( single , [
fileArray => $fileArray
]);
Blade模板:
<ul>
@foreach ($fileArray as $file)
@if (count($file[ name ]) > 1)
@foreach ($file[ name ] as $folder)
@if ($folder == end($file[ name ]))
<li>
<span class="file-icon">?</span>{{ $folder }}<span class="file-size">({{ $file[ size ] }})
</li>
@else
<li>
<span class="file-icon">?</span>{{ $folder }}
</li>
@endif
@endforeach
@else
<li>
<span class="file-icon">?</span>{{ $file[ name ][0] }}<span class="file-size">({{ $file[ size ] }})
</li>
@endif
@endforeach
</ul>
这在每一次铺设线时都产生了一个<代码><li>要素,该元素与控制器上显示的原始路径名称分离。 你们应当能够看到这一问题如何成问题,因为每当提及一个双倍名称时,就会产生一个新的<li>
。