Список массивов PHP foreach для каждой записи

При запуске цикла foreach для массива, встроенного в несколько записей, я не могу заставить массив отображать только один набор массивов для каждой записи. Вместо этого он отображает все записи массива для каждого экземпляра в каждом результате. Я читаю файл CSV, и этот файл может иметь 25 записей или 500 записей (количество записей никогда не известно), но при чтении поля «Параметры» массив для всех записей отображается в полученные результаты. Вот код, который я запускаю:

$option_list = explode(',', $csvdata['Options']);
foreach ($option_list as $feature) {
    $output .= '<li>' . $feature . '</li>';
}

$content = '<ul>' . $output . '</ul>';

Как видите, я просто создаю неупорядоченный список. Хотя мне удалось создать неупорядоченный список, каждый массив в поле «Параметры» отображается в результатах как один огромный неупорядоченный список. Он не перечисляет один массив для каждой конкретной отдельной записи.

Вот формат CSV:

Year     Make     Model     Color     Options (the array)
2010     Chevy    Camaro    Black     2dr, convertible, 6.2L, V8
2011     Dodge    Charger   Red       2dr, coupe, 3.6L, V6
2013     Ford     F250      Blue      4WD, Crew Cab, V10, Tow Package

На выходе создается следующий неупорядоченный список:

<ul>2010 Chevy Camaro Black
  <li>2dr
  <li>convertible
  <li>6.2L
  <li>V8
  <li>2dr
  <li>coupe
  <li>3.6L
  <li>V6
  <li>4WD
  <li>Crew Cab
  <li>V10
  <li>Tow Package</li></ul>

И так для каждой записи. Мне нужно, чтобы неупорядоченный список представлял только ту запись, к которой он относится в файле CSV, и заканчивал цикл для каждой записи. Пожалуйста, дайте мне знать, что мне не хватает.


person Tom    schedule 27.01.2015    source источник


Ответы (1)


Вы не очищаете $input перед циклом, поэтому он все еще содержит элементы списка из предыдущей строки в CSV. Просто добавь

$output = '';

перед оператором foreach.

person Barmar    schedule 27.01.2015
comment
Спасибо, Бармар. Как вы заставили таблицу CSV форматироваться здесь, на SO? Я не видел варианта для него. Кстати, я проверяю ваш ответ прямо сейчас. - person Tom; 27.01.2015
comment
Используйте Ctl-k или инструмент {} в редакторе SO, чтобы пометить буквенные блоки кода. - person Barmar; 27.01.2015