首页 > 解决方案 > 即使数组中不存在值,我如何修改我的数组代码以完成?

问题描述

我正在修改不再与我们合作的开发人员为我编写的一些代码,本质上代码从 Web 服务中提取数据并解析到数组,然后在数组中查找键并将关联的值发布到HTML表,当每个条目都存在于数据中时一切正常,但是如果在数组中找不到该值,则修改代码是否返回通用值(“未提交”)。

背景信息很有帮助,因此用例是:

Array 由销售团队组成,他们每个人登录一个网站并提交当天的销售总额,我们询问 Web 服务以通过 SOAP 调用返回数据,该调用将数据提取到代码中。解析数据并在网页上的表格中表示值。

如果单个销售团队成员未提交数据,则代码无法返回任何数据。

我一直在谷歌搜索并点击我的复数视力帐户,以尽可能多地了解这是如何完成的,但我做不到。

class SalesResponseFactory
{
    private $date;

    //private $keyArray = ['KE', 'JY', 'OR', 'KR', 'SY', 'DB'];

    public $responseData = [];


    function __construct($date)
    {
        libxml_use_internal_errors(true);

        $this->date = $date;
    }

    private function getResponseData($date)
    {
       ....
    }

    private function parserToArray($data)
    {
        $data = substr($data, strpos($data, "<DataResult>"));
        $data = substr($data, 0, strpos($data, "</DataResult>") + strlen("</DataResult>"));

        $xml = simplexml_load_string($data);

        if ($xml === false) {
            throw new Exception("Invalid user credentials.");
        }

        $json = json_encode($xml);
        $array = json_decode($json,TRUE);
        if (empty($array['Results'])) {
            throw new Exception("Holiday - No Sales Data Recorded");    
        }

        return $array['Results']['Data'];
    }

    private function alignmentArray($sales)
    {
        if ($sales['Name'] == 'Market Code' || $sales['Name'] == 'Sales Volume' || $sales['Name'] == 'Turnover Volume' || $sales['Name'] == 'Date') {
            if($sales['Name'] == 'Market Code') {
                $this->responseData[$sales['Instrument']]['Market Code'] = $sales['Value'];
            }
            if($sales['Name'] == 'Sales Volume') {
                $this->responseData[$sales['Instrument']]['Sales Volume'] = $sales['Value'];
            } 
            if($sales['Name'] == 'Turnover Volume') {
                $this->responseData[$sales['Instrument']]['Turnover Volume'] = $sales['Value'];
            } 
            else {
                $this->responseData[$sales['Instrument']]['Date'] = $sales['Value'];
            }
        }

    }


    public function parser()
    {
        try {
            $salesArray = $this->getResponseData($this->date);
        } catch (Exception $e) {
            $response['status'] = 'error';
            $response['message'] = $e->getMessage();
            $response['results'] = '';

            return json_encode($response);
        }

        foreach ($salesArray as $sales) {
            $this->alignmentArray($sales);
        }

        $response['status'] = 'ok';
        $response['message'] = 'success';
        $response['results'] = [];
        foreach ($this->responseData as $row) {
            array_push($response['results'], $row);
        }

        return json_encode($response);
    }
}

?>

我希望仍应输出空值,但实际发生的是没有数据返回到 HTML 表。

标签: phparrayshtml-table

解决方案


推荐阅读