Я использую следующую функцию, чтобы проверить, есть ли поисковое слово в имени файлов моей папки.
$files2=list_files("documents/minelli"); Class Commentaire_filter{ static function test_print($item, $key, $value) { if (preg_match("#".$value."#", $item)) { $array = Array($key=>$item); print_r($array); ?> <a href="documents/minelli/<?php echo $item; ?>"><?php echo $key.' '. $item; ?></a><br /> <?php } } } array_walk_recursive($files2, 'Commentaire_filter::test_print',$motrecherche );
Я получаю список файлов.
Я хотел бы добавить ссылку, позволяющую пользователям загружать файл.
Когда я использую функцию array_walk_recursive, я могу получить только имя файла и ключа. Как я могу получить имя родительских массивов, чтобы сделать ссылку?
Здесь выдержка из моих $ файлов:
array (size = 5)
'Administratifs' =>
array (size=5) 0 => string 'campagne-sanmarina.jpg' (length=22) 1 => string 'COSMO Echantillons ETE 2009.xls' (length=31) 2 => string 'COSMOPARIS Echantillons MARO Hiver 2011 311-411.xls' (length=51) 3 => string 'cosmoparis-boutique.jpg' (length=23) 4 => string 'minelli-20-ans.png' (length=18)
«Торговля» =>
array (size=4) 0 => string 'a-gagner-cosmoparis.jpg' (length=23) 1 => string 'CONTROLE 2009.pdf' (length=17) 2 => string 'cosmoparis-boutique.jpg' (length=23) 3 => string 'soldes-cosmoparis.jpg' (length=21)
'Gestion' =>
array (size=1) 'PROCEDURES' => array (size=5) 0 => string 'cosmoparis-boutique.jpg' (length=23) 1 => string 'flux-ecommerce-smc.pdf' (length=22) 2 => string 'Minelli-Lyon.jpg' (length=16) 3 => string 'sanmarina-magasin-interieur.jpg' (length=31) 4 => string 'visuel_chaussures_minelli_printemps_ete_2009.jpg' (length=48)
«Магасины» =>
array (size=2) 0 => string 'COSMO Echantillons ETE 2009.xls' (length=31) 1 => string 'san-marina-saint-etienne.jpg' (length=28)
'Ressources Humaines' =>
array (size=7) 'ACTUALITES PAYE' => array (size=3) 0 => string 'COSMOPARIS Echantillons MARO Hiver 2011 311-411.xls' (length=51) 1 => string 'cosmoparis-boutique25.jpg' (length=23) 2 => string 'minelli-tours.jpg' (length=17) ...
Для «cosmoparis-boutique25.jpg» я хотел бы получить имя родительского массива («Ressources Humaines» => «ACTUALITES PAYE»). Как я могу получить эту информацию, чтобы построить ссылку, например «myfolder / Ressources Humaines / ACTUALITES PAYE / cosmoparis-boutique25.jpg?
Спасибо за помощь!
Вам придется array_walk_recursive
и array_walk_recursive
собственную рекурсивную прогулку. Это позволит вам поддерживать или передавать пользовательскую информацию о состоянии, когда вы рекурсивете.
Например:
function my_walk_recursive(array $array, $path = null) { foreach ($array as $k => $v) { if (!is_array($v)) { // leaf node (file) -- print link $fullpath = $path.$v; // now do whatever you want with $fullpath, eg: echo "Link to $fullpath\n"; } else { // directory node -- recurse my_walk_recursive($v, $path.'/'.$k); } } }