SimpleXMLElement foreach показывает только при наличии более одного результата

У меня есть простой http-запрос.

Отлично работает, если есть более 1 результата.

Результат возвращается в виде xml-файла, который я затем помещаю в таблицу для просмотра конечным пользователем.

Как заставить foreach работать, когда есть только один результат?

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "There are no Jobs available ";
} else {
?>

<table id  = "table-job" class = "container sortable">
  <thead>
    <tr>
<th class = "job" > Job</th>
 <th class = "position" > position</th>
 <th class = "name" > Name</th>
</tr>
</thead>


<?php
$xml = new SimpleXMLElement($response);

foreach($xml->record as $item)
?>
<tr>
<td class = "jon"><?php echo (string)$item->job; ?></td>
<td class = "position"><?php echo (string)$item->position; ?></td>
<td class = "name"><?php echo (string)$item->name; ?></td>
</tr>

Когда в ответ отправляется более одного результата, все работает нормально.

Если ничего нет, то будет написано Нет доступных вакансий.

Что ожидается.

Однако, если есть только 1 результат, ничего не отображается, как будто foreach просто не работает.

Привет! Не могли бы вы редактировать ответить на этот вопрос, чтобы удалить ненужные части (HTML и вызовы curl) и включить образец XML, который воспроизводит проблему. Также убедитесь, что PHP-код, который вы нам показали, это то, что вы действительно запускали и видели описанный результат. Это должно дать нам минимальный воспроизводимый пример, чтобы мы могли помочь с вашей проблемой, а не просто гадать.

IMSoP 11.06.2019 17:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы просто посмотрите на следующий код. Я надеюсь, что это работа для вас.

 <?php
 $xml = simplexml_load_file("sample.xml", NULL, LIBXML_NOCDATA);

 foreach ($xml->record as $item) {?>
 <tr>
    <td class = "jon"><?php echo (string)$item->job; ?></td>
    <td class = "position"><?php echo (string)$item->position; ?></td>
    <td class = "name"><?php echo (string)$item->name; ?></td>
 </tr>
 <?php } ?>

Не могли бы вы добавить объяснение того, что вы изменили здесь? Единственное отличие, которое я вижу, это включение LIBXML_NOCDATA, что не имеет значения для вывода, потому что (string) в любом случае всегда дает значение узлов CDATA.

IMSoP 19.07.2019 20:09

Другие вопросы по теме