Помогите объединить 2 массива и отсортировать по ключу - PullRequest
0 голосов
/ 26 марта 2009

У меня возникли проблемы с основной проблемой php, и я хочу знать, может ли кто-нибудь мне помочь. По сути, мне нужно объединить результаты двух запросов и объединить массивы на основе ключа, сохраняя при этом значение 1 ключ-1, которое присутствует в обоих запросах.

Например: "выбрать * из таблицы 1, таблицы 2, где table1.id = table2.id" ... создать массив этого.

Тогда: "выберите * из таблицы 3, таблицы 4, где table3.id2 = table4.id2" .. создайте другой массив.

Наконец: while ($ res) {распечатать каждую строку с помощью}.

Есть идеи, как с этим справиться? Псевдокод с благодарностью. Отношения между идентификаторами таковы: table1.id = table3.id, но остальные идентификаторы просто для объединения таблиц, представленных в запросах.

Ответы [ 2 ]

3 голосов
/ 26 марта 2009
<?php

// Merge arrays keeping keys
$new_array = array_merge($array1, $array2);

// Sort by key
ksort($new_array);

?>
2 голосов
/ 26 марта 2009

Если вам не нужны 2 массива отдельно, я бы использовал объединение в SQL, которое должно быть быстрее и меньше накладных расходов.

например:

"(select * from table1, table2 where table1.id = table2.id)
     UNION ALL 
 (select * from table3, table4 where table3.id2 = table4.id2)"

Это предполагает одинаковую структуру для обоих массивов. mySQL , но синтаксис является стандартным SQL, а не специфичным для mySQL.

или

"Select * from ((select table1.id as id, * from table1, table2 where table1.id = table2.id)
       UNION
      (select table3.id as id, * from table3, table4 where table3.id2 = table4.id2)) as t
 ORDER BY t.id"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...