2012-06-01 17 views
1

在搜索我有一個PHPArray:在PHP數組

$fullData = array ( 
     array ('id' => 23123, 'name'=>'a', number =>...), 
      array().... 
); 

此完整數據集被顯示給用戶。 但是,如果他來自一個表單頁面,我POST數據來改變這個數組。

我需要搜索數組字段,相對於用戶字段。 因此,如果任何POST數據如果沒有填充,我默認值爲全部。

if($resetData == 1) { 
    foreach ($params as $i=>$k) { 
     if($k!='all') { 
      $fields[][$i] = $k; 
     } 
    }... 

因此得到fields陣列中填充數據的用戶。 現在如何以SQL和格式搜索用戶填寫的數據。 例如:名稱==「aaditi」 輪廓==「學生」,會列出與名稱aaditi有學生簡介

我試着像array_searchstrstr各種功能的所有數據,以及其他一些問題在stackoverflow上,但它們大多侷限於單個鍵值搜索。

回答

2

我會逐行搜索數據數組,找到匹配傳遞過濾器的所有內容。以你的領域陣列是一個關鍵=>值,其中關鍵是列名和值是需要的值,

$outputArray = array(); 
foreach($fullData as $row) { 
    $addToOutput = true; 
    foreach ($fields as $field) { 
     foreach($field as $key => $value) { 
      if (!isset($row[$key]) || $row[$key] != $value) { 
       $addToOutput = false; 
      } 
     } 
    } 
    if ($addToOutput == true) { 
     $outputArray[] = $row; 
    } 
} 

它是不是最有效的解決方案,我相信,一個更好的人能找到,但是這應該可以工作,至少對於不大量的數據(每行10列> 100,000行)。你也可以運行這個沒有參數的算法,所有的數據都應該出來。

+0

工作的很好! 我添加了一些隨機數據來增加大小,沒有延遲。謝謝 :) –