我有一個複雜的問題,我需要一些指導。我們是一個非營利組織,對世界各地的工廠進行認證或不認證。我們有一個WSDL Web服務,它返回全球各國認證工廠的名稱和聯繫信息。它接受一個三字母字符串作爲參數(即孟加拉國的BGD
,中國的CHN
,哥倫比亞的COL
)。需要通過WSDL返回排序大量數據
我設計了一個HTML選擇頁面,以便用戶可以選擇一個國家並查看工廠列表。我希望能夠編寫一種只將具有認證工廠的國家放入此列表中的過濾器,並將那些不包含認證工廠的國家排除在外。
我已經寫下了下面的代碼,它確實完成了這件事,但是它令人難以忍受,而且真的讓這個網站陷入泥潭。 (爲簡便起見,我只包括了前幾個國家。全陣列包括約210個國家。此外,factCountByCountryID()
函數返回當前在特定國家的工廠的數量。
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("http://apollov-dev.worlddata.com:8080/WrapSystem/services/FactoriesWS?wsdl",array("trace" => 1, "exceptions" => 0));
$countryList=array("AFG"=>"Afghanistan","ALA"=>"Aland Islands","ALB"=>"Albania","DZA"=>"Algeria","ASM"=>"American Samoa","AND"=>"Andorra","AGO"=>"Angola","AIA"=>"Anguilla","ATG"=>"Antigua and Barbuda","ARG"=>"Argentina","ARM"=>"Armenia","ABW"=>"Aruba","AUS"=>"Australia","AUT"=>"Austria","AZE"=>"Azerbaijan","BHS"=>"Bahamas","BHR"=>"Bahrain","BGD"=>"Bangladesh","BRB"=>"Barbados","BLR"=>"Belarus","BEL"=>"Belgium","BLZ"=>"Belize","BEN"=>"Benin","BMU"=>"Bermuda","BTN"=>"Bhutan","BOL"=>"Bolivia","BIH"=>"Bosnia and Herzegovina","BWA"=>"Botswana","BRA"=>"Brazil","VGB"=>"British Virgin Islands","BRN"=>"Brunei Darussalam","BGR"=>"Bulgaria","BFA"=>"Burkina Faso","BDI"=>"Burundi","KHM"=>"Cambodia","CMR"=>"Cameroon","CAN"=>"Canada","CPV"=>"Cape Verde","CYM"=>"Cayman Islands");
foreach($countryList as $code=>$country)
{
$params->countryCd=$code;
$number=$client->factCountByCountryID($params);
$factval=$number->factCountByCountryIDReturn;
if($factval!=0)
{
$countriesWithFactories["$code"]="$country";
}
else continue;
}
?>
我應該注意:我的問題是沒有人有任何想法如何使這更有效? – 2013-03-21 15:31:57