我需要按照另一個數組內容的精確順序排序關聯數組。 該數組通過2個獨立的sql請求(如下所述)進行檢索。請求不能合併爲只有一個請求,所以我必須按照第一個數組的順序排序第二個數組。由其他數組排序關聯數組
這些都是數組:
#Array which contains the id's in needed order
$sorting_array = array(1,2,3,8,5,6,7,9,11,10...);
#Array which contains the values for the id's, but in order of "id" ASC
$array_to_sort = array(
array("id" => "1", "name" => "text1", "help" => "helptxt2");
array("id" => "2", "name" => "text2", "help" => "helptxt2");
);
的SQL查詢:
SQL-Ouery爲$ sorting_array:
(分貝場 '的conf' 是設置爲 「文本」,也許這是我的問題使我不得不先爆炸和內爆的條目之前,我可以使用它的下一個查詢)
$result = sql_query("select conf from config where user='me'", $dbi);
$conf = sql_fetch_array($result, $dbi);
$temp = explode(',', $conf[0]);
$new = array($temp[0], $temp[1], $temp[2], $temp[3],$temp[4],
$temp[5], $temp[6], $temp[7], $temp[8], $temp[9],
$temp[10], ...);#Array has max 30 entries, so I count them down here
$sorting_array = implode(',', $new);
SQL-Ouery爲$ array_to_sort:
$result = sql_query("SELECT id, name, helptxt
FROM table
WHERE id IN ($sorting_array)
AND language='english'");
while ($array_to_sort[] = mysql_fetch_array ($result, MYSQL_ASSOC)) {}
array_pop($array_to_sort);#deleting the last null entry
我可以訪問$ array_to_sort,如下所示一個接一個地看內容:
(如果下面的行與上面的數組不匹配,那麼我混淆了它。但是,線條下面是什麼帶來的內容)
echo $array_to_sort[0]["id"];
echo $array_to_sort[0]["name"];
echo $array_to_sort[0]["helptxt"];
但它是由「ID」 ASC排序,但我需要完全排序爲$ sorting_array。 我嘗試了一些事情:
while(list(,$array_to_sort) = each($sorting_array)){
$i++;
echo $array_to_sort . "<br>";
}
只帶來了標識的正確的順序,而不是內容。現在我有點困惑,因爲我嘗試了很多東西,但最終都給了我相同的結果。
也許sql-query可以在一個步驟中完成,但我沒有使它工作。 我搜索的所有結果都只顯示瞭如何對ASC或DESC進行排序,但不是我想要的結果。
此外,我必須承認,我是相對新的PHP和MySQL。
希望你們中的一些人能把我帶回正軌。
非常感謝提前。
非常感謝所有的答案。 我嘗試了它們,但SoapBox是正確的,PHP做這件事非常緩慢,因爲我總是遇到內部服務器錯誤。 所以我去了,重新思考我的數據庫表,並嘗試另一種方法。 – 2010-01-15 22:40:41