Формирование переменных из вывода веб-службы PHP - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь сформировать переменные из вывода, полученного от веб-службы.Веб-сервис предоставляет подробную информацию о транспортном средстве после ввода VIN-кода транспортного средства в систему.Ниже приведена часть выходных данных, получаемых после ввода VIN.

object(stdClass)#2 (14) {
  ["responseStatus"]=>
  object(stdClass)#3 (2) {
  ["responseCode"]=>
  string(10) "Successful"
  ["description"]=>
  string(10) "Successful"
}
["vinDescription"]=>
object(stdClass)#4 (11) {
  ["WorldManufacturerIdentifier"]=>
  string(17) "Germany Audi Nsu "
 }

["vin"]=>
string(17) "WAUUL78E38A092113"
["modelYear"]=>
int(2008)
["division"]=>
string(4) "Audi"
["modelName"]=>
string(2) "S4"
["styleName"]=>
string(13) "5dr Avant Wgn"
["bodyType"]=>
string(11) "Wagon 4 Dr."
["drivingWheels"]=>
string(3) "AWD"
["builddata"]=>
string(2) "no"
}

["style"]=>
array(2) {
  [0]=>
  object(stdClass)#26 (17) {
   ["division"]=>
  object(stdClass)#27 (2) {
    ["_"]=>
    string(4) "Audi"
    ["id"]=>
    int(4)
  }
  ["subdivision"]=>
  object(stdClass)#28 (2) {
    ["_"]=>
    string(4) "Audi"
    ["id"]=>
    int(5020)
  }
  ["model"]=>
  object(stdClass)#29 (2) {
    ["_"]=>
    string(2) "S4"
    ["id"]=>
    int(17308)
  }
  ["basePrice"]=>
  object(stdClass)#30 (4) {
    ["unknown"]=>
    bool(false)
    ["invoice"]=>
    float(46137)
    ["msrp"]=>
    float(49610)
    ["destination"]=>
    float(775)
  }
  ["bodyType"]=>
  object(stdClass)#31 (3) {
    ["_"]=>
    string(13) "Station Wagon"
    ["id"]=>
    int(7)
    ["primary"]=>
    bool(true)
  }
  ["marketClass"]=>
  object(stdClass)#32 (2) {
    ["_"]=>
    string(11) "Small Wagon"
    ["id"]=>
    int(53)
  }
  ["acode"]=>
  object(stdClass)#33 (1) {
    ["_"]=>
    string(13) "USB80AUC085A0"
  }
  ["id"]=>
  int(292015)
  ["modelYear"]=>
  int(2008)
  ["name"]=>
  string(17) "5dr Avant Wgn Man"
  ["nameWoTrim"]=>
  string(17) "5dr Avant Wgn Man"
  ["mfrModelCode"]=>
  string(6) "8ED549"
  ["fleetOnly"]=>
  bool(false)
  ["modelFleet"]=>
  bool(false)
  ["passDoors"]=>
  int(4)
  ["altBodyType"]=>
  string(13) "Station Wagon"
  ["drivetrain"]=>
  string(15) "All Wheel Drive"
}

До сих пор я успешно создавал и вызывал переменные, хранящиеся в виде объектов.

Вот что я сделал до сих пор.

Создайте переменные на основе вывода:

$manuf = $result->vinDescription->WorldManufacturerIdentifier;
$vin = $result->vinDescription->vin;
$year = $result->vinDescription->modelYear;
$make = $result->vinDescription->division;
$model = $result->vinDescription->modelName;
$style = $result->vinDescription->styleName;
$body= $result->vinDescription->bodyType;

Распечатайте переменные, чтобы описать автомобиль:

echo "Manufacturer: ".$manuf;
echo "<br>";
echo "Year: ".$year;
echo "<br>";
echo "Make: ".$make;
echo "<br>";
echo "Model: ".$model;
echo "<br>";
echo "Trim: ".$style;
echo "<br>";
echo "Body style: ".$body;

Вывод:

Manufacturer: Germany Audi Nsu 
Year: 2008
Make: Audi
Model: S4
Trim: 5dr Avant Wgn
Body style: Wagon 4 Dr.
Drive type: Small Wagon

У меня проблемы с созданием и вызовом определенных переменных, которые, кажется, вложены в массивы.Две переменные, которые я заинтересован в создании - это число дверей и трансмиссия.Они находятся внизу оригинального вывода с именами passDoors и drivetrain.

Я пытался создать переменную следующим образом: $drivetype = $result['style']['drivetrain'];

Однако я потерпел неудачу.Любые идеи относительно того, как я могу создать и вызвать passDoors и drivetrain из исходного вывода?Любые отзывы приветствуются.


Обнаружение другого контрольно-пропускного пункта.Кажется, чем дальше я копаю данные, тем сложнее вызывать данные для создания новых переменных.Вот раздел, с которым я борюсь:

["technicalSpecification"]=>
 array(97) {
[0]=>
object(stdClass)#640 (2) {
  ["titleId"]=>
  int(1)
  ["value"]=>
  array(2) {
    [0]=>
    object(stdClass)#641 (3) {
      ["styleId"]=>
      array(2) {
        [0]=>
        int(292015)
        [1]=>
        int(292016)
      }
      ["value"]=>
      string(7) "Audi S4"
      ["condition"]=>
      string(3) "-PT"
    }
    [1]=>
    object(stdClass)#642 (3) {
      ["styleId"]=>
      array(2) {
        [0]=>
        int(292015)
        [1]=>
        int(292016)
      }
      ["value"]=>
      string(7) "Audi S4"
      ["condition"]=>
      string(0) ""
    }
  }
}
[1]=>
object(stdClass)#643 (2) {
  ["titleId"]=>
  int(2)
  ["value"]=>
  object(stdClass)#644 (3) {
    ["styleId"]=>
    array(2) {
      [0]=>
      int(292015)
      [1]=>
      int(292016)
    }
    ["value"]=>
    string(12) "5 Door Wagon"
    ["condition"]=>
    string(0) ""
  }
}
[2]=>
object(stdClass)#645 (2) {
  ["titleId"]=>
  int(6)
  ["value"]=>
  object(stdClass)#646 (3) {
    ["styleId"]=>
    array(2) {
      [0]=>
      int(292015)
      [1]=>
      int(292016)
    }
    ["value"]=>
    string(15) "All-Wheel Drive"
    ["condition"]=>
    string(0) ""
  }
}

Я пытаюсь извлечь "Audi S4", "5 Door Wagon" и "All-Wheel Drive"

Большое спасибодля любого входа.

1 Ответ

0 голосов
/ 14 сентября 2018

Хотя style - это массив, вы должны обрабатывать его как массив. Кажется, дело в том, что может быть передано несколько стилей. Так что не одна трансмиссия, а несколько трансмиссий.

Вы можете сделать это так:

    foreach($result->style as $style) {

        echo $style->passDoors . "\n";
        echo $style->drivetrain . "\n";
    }

Если вы уверены, что всегда есть только один стиль с индексом 0, как в данном примере, вы можете иметь альтернативный доступ к нему следующим образом:

echo $result->style[0]->passDoors . "\n";
echo $result->style[0]->drivetrain . "\n";
...