PHP-массив Объект класса stdClass не может быть преобразован в строку

Вопрос:

Я получил следующие параметры в ответ от клиента SOAP. Параметр Serial Equipment отображает первые значения и затем дает ошибку, поскольку объект класса stdClass не может быть преобразован в строку. У меня много значений, которые входят в параметр Serial Equipment и его массив. Поэтому не знаю, как отображать все значения

Код:

function getVehicleValuation()
{

$client = new SoapClient($wsdl, $options);
$result = $client->getVehicleValuation($params);
$return = array(

'Serial Equipment' => $result->vehicle->SerialEquipment

);
return $return;
}

Попытка показать результат из этого кода:

  if($parameter['aktion'] == 'getVehicle')
{
ob_start();
var_dump(Login());
$s = ob_get_clean();
$returned_array=getVehicleValuation();
foreach($returned_array as $objects)
{
foreach($objects as $key => $obj)
{
echo "key.: " . $key . "<br>";
echo $obj->Code . "<br>";
echo $obj->Desc_Short . "<br>";
echo $obj->Desc_Long . "<br>";
echo $obj->Esaco . "<br>";
}
}

}

Когда я использую просто var_dump (SerialEquipment), вывод будет давать результат как:

array (size=1)

'Serial Equipment' =>
array (size=41)
0 =>
object(stdClass)[6]
public 'Code' => int 204093
public 'Desc_Short' => string 'Ablagefach mittig in Gepäckraumtrennwand;ESACO_UG(122)' (length=55)
public 'Desc_Long' => string 'Ablagefach mittig in Gepäckraumtrennwand inkl. verschiebbarem Haltenetz' (length=72)
public 'Esaco' =>
object(stdClass)[7]
...
1 =>
object(stdClass)[8]
public 'Code' => int 160452
public 'Desc_Short' => string 'Airbag für Fahrer und Beifahrer, 2-stufi;ESACO_UG(103)' (length=55)
public 'Desc_Long' => string 'Airbag für Fahrer und Beifahrer 2-stufig' (length=41)
public 'Esaco' =>
array (size=2)
...
2 =>
object(stdClass)[11]
public 'Code' => int 195607
public 'Desc_Short' => string 'Airbag: Kopf- u. Seiten - Airbags vorn;ESACO_UG(104,102)' (length=56)
public 'Desc_Long' => string 'Airbag: Seitenairbag für Fahrer und Beifahrer (Kopf/Thorax)' (length=60)
public 'Esaco' =>
array (size=2)
...

Ответ №1

Если $result-> vehicle-> SerialEquipment возвращает массив, вы должны, вероятно, использовать этот массив, чтобы заполнить значение для вашего ключа “Серийное оборудование”.

Попробуйте print_r ($result-> vehicle-> SerialEquipment); в вашем php-коде для исследования содержимого.

Теперь вам решать, что вы хотите с этим делать. Вы хотите передать полный контент этого массива в свой “Серийное оборудование”? Или всего несколько значений?

Если вы хотите, чтобы структура WHOLE (независимо от того, что она есть) из $result-> vehicle-> SerialEquipment, упакованная в строку, взгляните на JSON. Json может перевести массив в строку, которую вы можете назначить.

Вы упаковываете его перед назначением ключевому “Серийному оборудованию”, поэтому он содержит строку. Затем распакуйте его при получении.

Посмотрите здесь:

http://php.net/manual/en/function.json-encode.php

а также

http://php.net/manual/en/function.json-decode.php

Ответ №2

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

foreach($returned_array as $key => $val) {
if (is_array($val)) {
echo $key . ' => ' . "<br/>";
foreach($val as $k => $v) {
echo '&nbsp;&nbsp;' . $k . ' ' . $v . '<br/>';
}
}
else {
echo $key . ' ' . $val . '<br/>';
}
}

Это пример кода, его можно расширить и закодировать рекурсивную функцию, которая отобразит более сложную структуру, такую как эта: http://dev.armage.org/wiki/doku.php?id=web:php: отлаживать

Оцените статью
TechArks.Ru
Добавить комментарий