Мне нужно отсортировать ассоциативный массив в точном порядке содержимого другого массива. Массивы извлекаются двумя отдельными sql-запросами (указано ниже). Запросы не могут быть объединены только с одним запросом, поэтому мне нужно отсортировать второй массив в порядке первого.PHP Сортировка ассоциативного массива другим массивом
Эти массивы:
#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:
(ДБ-поле 'конф' настроен как "текст", может быть, это мой проблема с тем, что я должен первым взрываются и лопаются записи, прежде чем я мог бы использовать его для следующего запроса)
$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"];
Но сортируются по «ид» ASC, но мне нужно точно сортировка, как и в $ sorting_array. я попробовал некоторые вещи:
while(list(,$array_to_sort) = each($sorting_array)){
$i++;
echo $array_to_sort . "<br>";
}
, которая только приносит идентификаторы в правильном порядке, но не содержание. Теперь я немного смущен, так как я пробовал так много всего, но все закончилось тем, что дали мне те же результаты.
Возможно, sql-запрос может быть выполнен за один шаг, но я не привел его к работе. Все результаты моих поисков только показали, как сортировать ASC или DESC, но не то, что я хочу.
Кроме того, я должен признаться, что я относительно новый для PHP и MySQL.
Надеюсь, кто-то из вас может вернуть меня в нужное русло.
Большое спасибо заранее.
Большое спасибо за ответы. Я пробовал их, но SoapBox прав, что PHP очень медленно делает это, так как я всегда сталкиваюсь с внутренней ошибкой сервера. Итак, я перехожу и переосмысливаю свои таблицы базы данных и пробую другой подход. –