Итеративное добавление массива с массивами из результатов sql - PullRequest
0 голосов
/ 29 сентября 2011

Я новичок здесь, но с удовольствием читаю вопросы и ответы других.Я довольно новичок в PHP и работаю над проектом - базовый поиск таблиц в MySQL и т. Д. Я хочу закончить с массивом массивов, форма которого показана ниже с приправами (не мой фактическийпроект).Содержание приходит из двух разных таблиц.Для каждого из названий приправ (из таблицы 1) я смотрю в таблице 2 типы приправ, связанных по идентификатору.Все в порядке поиска и захвата, но у меня проблемы с циклом и созданием моего окончательного массива $ Condiments.

В первой части цикла я беру имя приправы из строки $ и добавляю его кмассив.Но мне нужно, чтобы каждое из этих имен приправ было пустым массивом для добавления чего-либо в следующем шаге.Я посмотрел вокруг, но не смог найти хороший способ итеративно добавлять новые массивы-заполнители в массив.Есть ли элегантное решение?Какая-нибудь крутая функция, которой я не пользуюсь?Спасибо!

// SQL search for condiment words, blah blah, leading to...
$rowsnumber = mysql_num_rows($result);

for ($j = 0 ; $j < $rowsnumber ; ++$j)
    {
    $row = mysql_fetch_row($result); // $row is an array featuring a condiment name and other stuff.
    $Condiments[] = $row[1]; // condiment name goes in array.
    $CondimentType = searchTable2($row[0]); 
    // using the condiment name's ID, I look up its matching types via a function.
    // $CondimentType is now an array of IDs and types from Table2 that I want to append to the condiment name I just added above.
        $Condiments[$row[1]] = $CondimentType;
    // I repeat the process for the next name
    }

// Final desired result...
$Condiments=
Array
(
    [Pickles] => Array
        (
            [34] => Dill
            [23] => Butter
        )
    [Mustard] => Array
        (
            [22] => Hot
        )
    [Relish] => Array
        (
            [3] => Pickle
        )
)

1 Ответ

0 голосов
/ 30 сентября 2011

так как я уже сказал, вам нужно использовать объединение для выполнения необходимой задачи.

Вы можете найти более подробное объяснение здесь о соединениях

http://dev.mysql.com/doc/refman/5.0/en/join.html

, в вашем случае этот запрос должен выполнить работу

select t1.word,t3.word
from table1  as t1  join table2 as t2 on t1.id =t2.id
left join table1 as t3 on t3.id = t2.linkid

я выполнилзапрос на моем компьютере и это результаты

+---------+--------+
| word    | word   |
+---------+--------+
| Pickles | Dill   |
| Pickles | Butter |
| Mustard | Hot    |
| Relish  | Pickle |
+---------+--------+

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...