7

次の関数を使用して、検索語がフォルダーのファイル名に含まれているかどうかを確認します。

$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 関数を使用している場合、ファイルの名前とキーしか取得できません。親配列の名前を取得してリンクを作成するにはどうすればよいですか?

ここに私の $files の抜粋があります:

配列 (サイズ=5)

「管理者」 =>

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)

'ジェスチャー' =>

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」のようなリンクを作成するためにこの情報を取得するにはどうすればよいですか?

ご協力ありがとうございました!

4

1 に答える 1

7

独自の再帰的ウォークを破棄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);
        }
    }
}
于 2013-08-26T15:35:38.883 に答える