我需要按照另一个数组内容的确切顺序对关联数组进行排序。数组由 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-Queries:
SQL-Ouery for $sorting_array:
(db-field 'conf' 设置为“text”,也许这是我的问题,所以我必须先分解并分解条目,然后才能将其用于下一个查询。)
$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);
$array_to_sort 的 SQL-Ouery:
$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>";
}
这只会使 ID 以正确的顺序排列,而不是内容。现在我有点困惑,因为我尝试了很多东西,但最终都给了我相同的结果。
也许 sql-query 可以一步完成,但我没有把它带到工作中。我搜索的所有结果都显示了如何对 ASC 或 DESC 进行排序,但不是我想要的。
此外,我必须承认我对 PHP 和 MySQL 还比较陌生。
希望你们中的某个人能让我重回正轨。
提前谢谢了。