2013-08-26 24 views
4

我使用以下函數來驗證搜索詞是否在我的文件夾的文件名中。在array_walk_recursive函數後獲取父數組名稱

$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函數時,我只能得到文件名和密鑰。我如何獲得父數組的名稱來建立鏈接?

這裏我的$文件的摘錄:

陣列(尺寸= 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) 

'Magasins百貨公司'=>

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?

謝謝你的幫助!

回答

5

你將不得不溝通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, e.g.: 
      echo "Link to $fullpath\n"; 
     } 
     else { 
      // directory node -- recurse 
      my_walk_recursive($v, $path.'/'.$k); 
     } 
    } 
} 
+0

非常感謝你爲你的腳本,它是完美!!!! – user2718571

+0

悲傷...這需要實施,我發現,即使回調傳遞的數組鍵是整數鍵,而不是關聯 - 像... –

+0

對於那些使用Laravel> = v4.2 [array_dot()](https ://laravel.com/docs/5.4/helpers#method-array-dot)在數組項變爲'parentKey.childKey => childValue'的情況下,helper函數非常方便地遞歸地平滑嵌套數組。 – alexkb