私はそのような配列に含まれるデータを持っています、
$file['info']['files'] = array(
[0] => array(
'length' => (int),
'path' => array (
[0] => 'file.txt',
),
),
[1] => array(
'length' => (int),
'path' => array (
[0] => 'directory one',
[1] => 'file2.txt',
),
),
[2] => array(
'length' => (int),
'path' => array (
[0] => 'directory one',
[1] => 'directory two',
[2] => 'file3.txt',
),
),
);
$file['info']['files']
配列には、任意の数の要素を含めることができます。各path
配列に含まれる$file['info']['files']
配列は、私が問題を抱えている場所です。
ファイル構造に関する情報が含まれています。要素が 1 つだけ存在する場合、それはファイルです。複数の要素が存在する場合、上から始まる各要素は次の要素の親フォルダーであり、最後の要素は最後のフォルダー内のファイルです。上記の例を取ると、次のファイル構造になります
FILE file1.txt
FOLDER directory one
FILE file2.txt
FOLDER directory two
FILE {file3.txt}
このデータを次のような独自の配列構造に抽出したいと思います。
$sortedFiles = array(
'file1.txt' => (int),
'directory one' => array(
'file2.txt' => (int),
'directory two' => array(
'file3.txt' => (int),
),
),
);
私はこれまでのところこのコードを持っています、
foreach($file['info']['files'] as $file) {
// LENGTH AND PATH ARE SET
if(isset($file['length'], $file['path'])) {
// GET COUNT OF FILE PATH ARRAY
$count = count($file['path']);
// SINGLE FILE
if($count == 1) {
$sortedFiles[$file['path'][0]] = $file['length'];
// FILES IN DIRECTORY
} else {
// BUILD ARRAY STRUCTURE FOR DIRECTORIES
}
}
}
アレイにディレクトリを追加するときに問題があります。手動で行うことができ、ディレクトリの配列が存在するかどうかを確認し、存在しない場合は作成し、存在する場合は追加するたびに、非常に多くのディレクトリをダウンさせることができます。以下のコードでこれを試しましたが、1ディレクトリの深さしかありません(コードは// BUILD ARRAY STRUCTURE
上記の場所に行きました)。
// FOLDER NOT SET
if(!isset($files[$file['path'][0]])) {
$sortedFiles[$file['path'][0]] = array($file['path'][1] => $file['length'],);
// FOLDER SET
} else {
$sortedFiles[$file['path'][0]][$file['path'][1]] = $file['length'];
}
存在する各ディレクトリの配列を動的に作成し、必要な情報を追加するにはどうすればよいでしょうか?ディレクトリ構造が何レベルも深くなる可能性があることを念頭に置いてください。
私のかなり長い質問を読んでくれてありがとう。誰かが私にくれた助けに感謝します。