2014-04-25 50 views
0

我想根據在此SO問題中找到的答案獲得此工作:How to search by key=>value in a multidimensional array in PHP - 但我沒有運氣。搜索多維數組,並將找到的值放在新數組(PHP)中

我在查詢數據庫。我需要取得結果,並將所有具有'type'= $ type的類型放入一個新數組中以使用該新數組來顯示信息。

搜索功能:

function search($array, $key, $value){ 
    $results = array(); 
    search_r($array, $key, $value, $results); 
    return $results; 
} 
function search_r($array, $key, $value, &$results){ 
    if (!is_array($array)) { 
     return; 
    } 
    if (isset($array[$key]) && $array[$key] == $value) { 
     $results[] = $array; 
    } 
    foreach ($array as $subarray) { 
     search_r($subarray, $key, $value, $results); 
    } 
} 

驗證碼:

$getTypes = mysqli_query($link, "SELECT * FROM Type WHERE section = ".$selectValue." ORDER BY `order`"); 
$getCategories = mysqli_query($link, "SELECT * FROM Category WHERE section = ".$selectValue." ORDER BY `order`"); 
$getdbvalues = mysqli_query($link, "SELECT * FROM `Data` WHERE section = ".$selectValue." AND `date` = ".$datecomp); 
$dbvalues = mysqli_fetch_assoc($getdbvalues); 
while($type = mysqli_fetch_assoc($getTypes)){ 
    $typeid = $type['id']; 
    $getdbdata = search($dbvalues, 'type', $typeid); 
    while($category1 = mysqli_fetch_assoc($getCategories)){ 
     // DISPLAY DATA FROM $getdbdata 
    } 
} 
+0

你在哪裏使用search_r函數返回的數組'$ subarray'? – HeroFTime

+0

對不起,功能錯誤。更新。 – lefty55104

+0

我覺得這是可以/應該用'JOIN'完成的事情。 –

回答

0

你應該只是這樣做在MySQL。

SELECT * FROM `Data` 
LEFT JOIN `Type` ON `Type`.id = `Data`.type 
LEFT JOIN `Category` ON `Category`.id = `Data`.category 
WHERE `Data`.section = '$selectValue' 

我在猜測表結構。此外,如果您需要檢查每個表上的selectValue,則需要將這些添加到查詢的WHERE部分。

+0

什麼會加入這些事情呢?如何在顯示時使用這些信息(例如,當我需要顯示某種類型的項目時)。這與我已經做的有什麼不同? – lefty55104

+0

這是一個查詢與您的3個查詢。您可以添加到WHERE部分來限制結果。如果你想開始在多個表中排列你的結果,這也非常有用。 http://dev.mysql.com/doc/refman/5.0/en/join.html – stomo21

+0

是的,但我需要搜索結果的特定類型,並相應地顯示。這仍然是我需要幫助的地方。加入這三個查詢沒問題,但我仍然不知道如何正確顯示結果。我在那裏的搜索功能沒有工作。 – lefty55104