У меня есть простой 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 просто не работает.
Вы просто посмотрите на следующий код. Я надеюсь, что это работа для вас.
<?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.
Привет! Не могли бы вы редактировать ответить на этот вопрос, чтобы удалить ненужные части (HTML и вызовы curl) и включить образец XML, который воспроизводит проблему. Также убедитесь, что PHP-код, который вы нам показали, это то, что вы действительно запускали и видели описанный результат. Это должно дать нам минимальный воспроизводимый пример, чтобы мы могли помочь с вашей проблемой, а не просто гадать.