2012-05-29 2 views
0

Я пытаюсь передать некоторую информацию из базы данных в HTML для отображения для моих пользователей. Я хотел бы печатать новые теги каждый раз, когда меняется «индустрия». Я пытаюсь использовать переменную с именем $ last_industry для отслеживания того, равна или нет той отрасли, в которой я сейчас перебираюсь, равна последней, но у меня нет хороших результатов. Я вставил свой код ниже. $ c ['user_industries_title'] - это то, что мне нужно для мониторинга.Переменная, которая меняет свое значение в конце foreach()

$last_industry = 'foo'; 

foreach($case_studies as &$c) { 
    //If the last industry we iterated over is different than the one we're currently iterating over, close the last section and print a new section. 
    if($last_industry != $c['user_industries_title']){ 
    echo "</section>" 
    echo "<section>"; 
    $changed = 1; 
    }else {$changed = 0} 

    $c = $last_industry; 
    $last_industry = $c['user_industries_title']; 
} 

Эта проблема связана с переменной $ last_industry. Для этого нужно обновить себя до последнего $ c ['user_industries_title'] для использования в начале следующей итерации, чего не происходит. Я что-то упускаю?

+0

Вы переписываете '$ c' во второй строке. – Gareth

ответ

2

Вам необходимо изменить значение $ last_industry внутри, если(), когда значение изменилось, в противном случае вы всегда работаете с тем же значением отрасли:

Также следует помнить о западне в создавая ссылку $ ca (&) - она ​​останется ссылкой на продолжительность сценария и может вызвать нечетные побочные эффекты, если вы зависеть от нее, сохраняя ее значение после выхода цикла.

+0

Awesome ... большое спасибо. Это решило мою проблему отлично –

1

Посмотрите на последние две строки, вы переопределите $c, который представляет собой массив с $last_industry, который является строкой, которую вы использовали в последней итерации. Переименуйте $c во вторую последнюю строку или полностью удалите ее.

BTW: Если вы установили свои настройки error_reporting PHP в E_ALL, вы бы получили уведомление, что $c больше не является массивом!

+0

Спасибо за информацию. Это также актуально. –