数组结果使用foreach语句显示在php中的json中

时间:2014-07-25 11:46:12

标签: php json foreach soap-client

我从Web服务SOAP客户端获取结果。我创建了一个数组来获取结果并使用json格式显示它。我得到的结果很少。我有Seri​​alEquipment参数,这是数组,我需要使用foreach循环获取结果。我在那里犯了一个错误。我不知道如何为每个语句分配我的$ vehiclResult数组。因此,最后我将使用vehicleResult数组使用json收集和显示所有结果。我的错误是在foreach循环中。

SerialEquipment参数的结构: enter image description here

代码:

        $vehicle = getVehicleValuation();
             $Serial=$vehicle['SerialEquipment'];
        $vehiclResult = array(
             'WE_Number' => $vehicle['WE Number'] ."<br>", 
             'Vehicle Type'=> $vehicle['Vehicle Type'] . "<br>", 
             'HSN' => $vehicle['HSN'] . "<br>",
             'TSN' => $vehicle['TSN'] . "<br>"
        );
        foreach($Serial as $key => $obj) {
    if(!isset($vehiclResult[$key]))
        $vehiclResult[$key] = array();      
            $vehiclResult[$key]['SerialEquipment'] = $key. "<br>";    
            $vehiclResult[$key]['Code'] = $obj->Code. "<br>";
            $vehiclResult[$key]['Desc Short'] = $obj->Desc_Short. "<br>";
            $vehiclResult[$key]['Desc Long'] = $obj->Desc_Long. "<br>";  

    foreach($obj->Esaco as $key2 => $obj2) {  
        if($obj2->EsacoMainGroupCode === null){
            // doesn't contain Esaco
            continue;
        }
        else{
           if(!isset($vehiclResult[$key][$key2]))
             $vehiclResult[$key][$key2] = array();
             $vehiclResult[$key][$key2]['esaco'] = $key2. "<br>";
             $vehiclResult[$key][$key2]['EsacoMainGroupCode'] = $obj2->EsacoMainGroupCode. "<br>";
             $vehiclResult[$key][$key2]['EsacoMainGroupDesc'] = $obj2->EsacoMainGroupDesc. "<br>";
             $vehiclResult[$key][$key2]['EsacoSubGroupCode'] =  $obj2->EsacoSubGroupCode. "<br>";
             $vehiclResult[$key][$key2]['EsacoSubGroupDesc'] =  utf8_decode($obj2->EsacoSubGroupDesc). "<br>";
             $vehiclResult[$key][$key2]['EsacoGroupCode'] =     $obj2->EsacoGroupCode. "<br>";
             $vehiclResult[$key][$key2]['EsacoGroupDesc'] =     utf8_decode($obj2->EsacoGroupDesc). "<br>";
        }       
    }           
 }       


 $result = array(       
   'vehicle' => $vehiclResult
 );   
 echo json_encode($result);
 die(); 
}

1 个答案:

答案 0 :(得分:1)

您需要检查您的阵列是否具有密钥:

if(!isset($vehiclResult[$key])) 

如果没有,你需要创建它:

$vehiclResult[$key] = array(); // as an array

此外,您并不需要对您的&#34;项目进行描述。您可以在结果页面上解析JSON以输出一些文本。

你可以做类似的事情。

做类似的事情:

foreach($Serial as $key => $obj) {
    if(!isset($vehiclResult[$key]))
        $vehiclResult[$key] = array();

    $vehiclResult[$key]['serial'] = $key;
    $vehiclResult[$key]['code'] = $obj->Code;
    $vehiclResult[$key]['short_desc'] = $obj->Desc_Short;
    $vehiclResult[$key]['long_desc'] = $obj->Desc_Long;

    foreach($obj->Esaco as $key2 => $obj2) {  
        if($obj2->EsacoMainGroupCode === null){
            // doesn't contain Esaco
            continue;
        }
        else{
           if(!isset($vehiclResult[$key][$key2]))
             $vehiclResult[$key][$key2] = array();
           $vehiclResult[$key][$key2]['esaco'] = $key2;
           $vehiclResult[$key][$key2]['EsacoMainGroupCode'] = $obj2->EsacoMainGroupCode;
           $vehiclResult[$key][$key2]['EsacoMainGroupDesc'] = $obj2->EsacoMainGroupDesc;
           $vehiclResult[$key][$key2]['EsacoSubGroupCode'] = $obj2->EsacoSubGroupCode;
           $vehiclResult[$key][$key2]['EsacoSubGroupDesc'] = utf8_decode($obj2->EsacoSubGroupDesc);
           $vehiclResult[$key][$key2]['EsacoGroupCode'] = $obj2->EsacoGroupCode;
           $vehiclResult[$key][$key2]['EsacoGroupDesc'] = utf8_decode($obj2->EsacoGroupDesc);
        }       
    }           
 }       


 $result = array(       
   'vehicle' => $vehiclResult
 );   
 echo json_encode($result);
 die(); 

如果你愿意保留你的文字&#34;和你的<br>代码,做同样的事情,但在&#34; =&#34;

之后添加你想要输出的内容

修改

**以前更改了代码..

如果您想测试$ vehiclResult,请尝试以下方法:

foreach($vehiclResult as $key=>$value){
   if(!is_array($value))
        var_dump($value);
   else {
       foreach($value as $key2=>$value2){
         if(!is_array($value2))
             var_dump($value2);
         else {
               foreach($value2 as $key3=>$value3){
                  var_dump($value3);
               }
         }
   } 
}