2016-04-12 10 views
-1

2つの変数を配列にプッシュしようとしていますが、キーが同じであることを確認します。1つのキーで2つの変数を配列に押し込むPHP

以下のコードは、ファイルがいっぱいのフォルダを介した検索機能です。 foreachでは、私は名前または名前の一部が検索語句と一致するかどうかチェックしています。結果がある場合は、ファイル名とファイルパスを配列に格納します。私は、コードを実行すると

protected function search() 
    { 

     $keyword = $this->strKeyword; 

     $foundResults = array(); 

     $dir_iterator = new RecursiveDirectoryIterator(TL_ROOT."/tl_files/"); 
     $iterator = new RecursiveIteratorIterator($dir_iterator, 
      RecursiveIteratorIterator::SELF_FIRST); 

     foreach ($iterator as $splFile) { 
      if ($splFile->getBaseName() == $keyword) { 
       array_push($foundResults, $splFile->getBaseName(), $splFile->getPathName()); 
      } 
      elseif(stripos($splFile->getBaseName(), $keyword) >= 3){ 
       array_push($foundResults, $splFile->getBaseName(), $splFile->getPathName()); 
      } 
     } 

     return $foundResults; 
    } 

が、それは以下のバック与える:

[0] => FileName Output 1 
[1] => FilePath Output 1 
[2] => FileName Output 2 
[3] => FilePath Output 2 

あなたが見ることができるように、彼はファイル名やファイルパス

しかし、私がしたいですのための新しいキーを設定しましたこれは:

[0] => Example 
     (
      [fileName] => logo.png 
      [pathName] => /tes/blalabaa/ddddd/logo.png 
     ) 

私はそれが少しはっきりしていると誰かが私を助けることを願っています。

Greetz

答えて

1

を:

array_push($foundResults, 
    array(
     'fileName' => $splFile->getBaseName(), 
     'filePath' => $splFile->getPathName() 
    ) 
); 
+0

Lashaneの解決策は$ foundResults []と同じですが、読むのが少し洗練され、より多くのPHPスタイルがあります。 – flyby

+0

ご協力いただきありがとうございます:)私はこのコードを使用し、それは素晴らしい動作します! – Swolschblauw

1

は、私はあなたがこのような何か必要とします代わりに、あなたは、キーと値のペアを含む配列をプッシュすることができます値の

$foundResults[] = array(
    'fileName' => $splFile->getBaseName(), 
    'pathName' => $splFile->getPathName()); 
+0

は非常にありがとうこれは私が探していた解決策+1でした。 – Swolschblauw

関連する問題