2012-04-30 5 views
0

Результат, сохраненный в $g, равен 1 и 2. Следующий код, который я написал ниже, в моем $array['music'] хранит только последний элемент, который равен 2. Но я хочу выполнить мой sql-запрос 2 раза под foreach и сопоставить значение $g, которое равно 1 и 2 с mu_id (mu_id - это имя столбца из другой таблицы music) и хранить все данные строк строк 1 и 2 в $array['music'].массив перезаписывается последним элементом в php

Он хранится только для второй строки (2) не для 1 или перезаписывает его, когда он выполняет второй цикл во внутреннем цикле. Если есть какая-либо логика, чтобы заставить ее работать, пожалуйста, дайте мне знать.

foreach($genre as $g) 
    { 
     echo $g; 
     echo "<br>"; 
     $array['music'] = $m -> where('mu_id', $g) -> get(); 
    } 
+0

Что такое $ g? Что такое $ m? Дайте вашим переменным подходящие имена, поэтому им будет легче следовать. Нам больше не нужно изучать наши ABC. –

+0

@Truth: CI Datamapper docs использует однобуквенные переменные во всех своих примерах, поэтому, вероятно, это просто копирование этих примеров. Я согласен, что это плохая привычка, но в этом случае я бы предположил, что '$ g' - это жанр, а' $ m' - это «музыка». Я также просто использовал бы полное слово. –

+0

@madmartigan Я хорошо знаю об этом. Я просто заявляю, что он не должен делать это сам, а также копировать примеры вслепую, не понимая основ массивов. –

ответ

6

Вы повторного объявления весь массив каждый раз, а не добавлять к нему, используйте вместо этого:

foreach($genre as $g) 
{ 
    $array['music'][] = $m->where('mu_id', $g)->get(); 
} 

Или еще лучше, меньше запросов:

$array['music'] = $m->where_in('mu_id', $genre)->get(); 
+0

Большое спасибо. Поскольку я новичок в codeigniter и datamapper, мне было интересно, как заставить его работать. Для меня это что-то вроде магии. Я действительно счастлив, так как теперь он работает отлично. Какой быстрый ответ !!! Еще раз спасибо ... :) –

+1

И CI, и DM имеют действительно хорошие документы, обязательно прочитайте их часто. Тем не менее, это была всего лишь фундаментальная ошибка PHP, у PHP действительно хорошие документы, также обязательно обращайтесь к ним часто. –

0

Если вы хотите для хранения всех данных в массиве вы должны использовать $array['music'][] вместо $array['music']