dswe30290 2014-07-25 11:46
浏览 49
已采纳

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

I am getting the result from web service SOAP client. I have created an array to get the result and display it using json format. I am getting few of my results properly. I have SerialEquipment parameter which is array and i need to get the result using foreach loop. I am doing an mistake there. I dont know how can i assign my $vehiclResult array in this for each statement. So that all the results at last i will collect and display using json using vehicleResult array.My mistake is in the foreach loop.

structure for SerialEquipment parameters: enter image description here

Code:

        $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条回答 默认 最新

  • doulifang5554 2014-07-25 12:02
    关注

    You need to check if your array have the key so:

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

    if not, you need to create it:

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

    Also, you don't really need to make a description of your "item". You can Parse your JSON on the result page to output some text.

    You can do something like.

    Do something like:

    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(); 
    

    If you would keep your "text" and your <br> code, do the samething but add what you want to output after the "="

    EDIT

    ** A HAVE CHANGE THE CODE PREVIOUSLY..

    if you want to test your $vehiclResult, try something like:

    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);
                   }
             }
       } 
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加