Как я могу отобразить объект PHP

0

У меня такой код:

$dataRecord1 = $client->GetRecord($token, $table, $filter);
echo "<pre>"; print_r($dataRecord1); echo "</pre>"; 
foreach ($dataRecord1->result as $drm) {
    echo "<tr><td>$drm->id</td>
              <td>$drm->nm</td>
          </tr>";
}

если я использую print_r ($ dataRecord1), будет отображаться следующим образом:

stdClass Object
(
    [error_code] => 0
    [error_desc] => 
    [result] => stdClass Object
        (
            [id] => 1
            [nm] => Josh
        )

)

но если с foreach ничего не отображает. Я хочу показать следующее:

----------------
| id  |  nm    |
----------------
| 1   | Josh   |
----------------

Может кто-нибудь мне помочь?

  • 0
    вы выбираете объект, а не массив. Напишите метод получения, и получите массив с теми же данными ... и foreach будет работать
Теги:

2 ответа

1

почему вы получаете результат $dataRecord1->? Это не массив, это другой объект. Пытаться

echo $dataRecord1->result->id; 
echo $dataRecord1->result->nm;
  • 0
    @FebryDamatrasetaFairuz Не имеет значения, является ли он одним или несколькими, точно так же, как не имеет значения для массива, если он один или более. Если вы видите «Объект», вам нужно использовать ->, а не []. Для основного объекта stdClass у вас все еще есть больше потомков, чем "result" ("error_code", "error_desc"), и получение данных через $ dataRecord1-> result работает, верно? ;)
0

$dataRecord1->result не является массивом. foreach в основном выполняет итерации по свойствам вашего объекта $dataRecord1->result.

Таким образом, вы можете просто удалить foreach, например:

$dataRecord1 = $client->GetRecord($token, $table, $filter);
echo "<pre>"; print_r($dataRecord1); echo "</pre>"; 
echo "<tr><td>" . $dataRecord1->result->id . "</td><td>" . $dataRecord1->result->nm . "</td></tr>";

Или если вы действительно хотите использовать foreach:

$dataRecord1 = $client->GetRecord($token, $table, $filter);
echo "<pre>"; print_r($dataRecord1); echo "</pre>"; 
echo "<tr>";
foreach ($dataRecord1->result as $k => $v) 
{ 
      echo '<td>' . $v . '</td>';
}
echo '</tr>';

Вам также нужно будет добавить код для отображения заголовка таблицы.

  • 0
    если я использую echo "<tr> <td> $ dataRecord1-> result-> id </ td> <td> $ dataRecord1-> result-> nm </ td> </ tr>"; ничего не отображает Но если я использую foreach ($ dataRecord1-> result как $ k => $ v), это работает. Спасибо..
  • 0
    Действительно, я исправил код. Просто нужно иметь $dataRecord1->result->id вне "

Ещё вопросы

Сообщество Overcoder
Наверх
Меню