如何回显数组中的特定值?

时间:2014-01-25 12:57:37

标签: php xml arrays

我遇到了一个我从某个地方上网的功能有问题,问题是该函数应该返回一个数组中的特定值但是每当我回显该函数时,它给了我一个大数组{ {1}}风格!这是代码: -

print_r

此代码不会给我任何结果,除非我取消注释 function USPSParcelRate() { $userName = 'XXXXXXXXXXX'; $orig_zip = '10459'; //Shipping Request $dest_zip = getshipinfo('zip_code'); foreach($_SESSION as $name=> $value){ if($value>0){ if(substr($name, 0, 5)=='cart_'){ if(substr($name, 0, 5)=='cart_'){ $id=substr($name, 5, (strlen($name)-5)); $query = mysql_query("SELECT `category`,`subcategory` FROM `items` WHERE `id`='".mysql_real_escape_string((int)$id)."' "); while($query_row = mysql_fetch_assoc($query)){ $category = $query_row['category']; $subcategory = $query_row['subcategory']; } $sql = mysql_query("SELECT `pounds`,`ounces` FROM `categories` WHERE `category`='".$category."' AND `subcategory`='".$subcategory."' "); while($sql_row = mysql_fetch_assoc($sql)){ $pounds = $sql_row['pounds']; $ounces = $sql_row['ounces']; } } } } } $url = "http://production.shippingapis.com/shippingapi.dll"; $ch = curl_init(); // set the target url curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // parameters to post curl_setopt($ch, CURLOPT_POST, 1); $data = "API=RateV4&XML=http://production.shippingapis.com/shippingapi.dll=<RateV4Request USERID='151ALHAD4911' > <Revision/> <Package ID='1ST'> <Service>PRIORITY</Service> <ZipOrigination>$orig_zip</ZipOrigination> <ZipDestination>$dest_zip</ZipDestination> <Pounds>$pounds</Pounds> <Ounces>$ounces</Ounces> <Container>NONRECTANGULAR</Container> <Size>LARGE</Size> <Width>12</Width> <Length>15.5</Length> <Height>6</Height> <Girth>31</Girth> </Package> </RateV4Request>"; // send the POST values to USPS curl_setopt($ch, CURLOPT_POSTFIELDS,$data); $result=curl_exec ($ch); $data = strstr($result, '<?'); // echo '<!-- '. $data. ' -->'; // Uncomment to show XML in comments $xml_parser = xml_parser_create(); xml_parse_into_struct($xml_parser, $data, $vals, $index); xml_parser_free($xml_parser); $params = array(); $level = array(); foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (array_key_exists('attributes',$xml_elem)) { list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']); } else { $level[$xml_elem['level']] = $xml_elem['tag']; } } if ($xml_elem['type'] == 'complete') { $start_level = 1; $php_stmt = '$params'; while($start_level < $xml_elem['level']) { $php_stmt .= '[$level['.$start_level.']]'; $start_level++; } $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];'; eval($php_stmt); } } curl_close($ch); //echo '<pre>'; print_r($params); echo'</pre>'; // Uncomment to see xml tags return $params['RateV4Response']['1ST']['1']['RATE']; } echo USPSParcelRate(); 行并且它显示如下: -

print_r

我怎样才能回显这一行的价值: -

    Array
(
    [RATEV4RESPONSE] => Array
        (
            [1ST] => Array
                (
                    [ZIPORIGINATION] => XXXXX
                    [ZIPDESTINATION] => XXXXX
                    [POUNDS] => 3
                    [OUNCES] => 5
                    [CONTAINER] => NONRECTANGULAR
                    [SIZE] => LARGE
                    [WIDTH] => 12
                    [LENGTH] => 16
                    [HEIGHT] => 6
                    [GIRTH] => 31
                    [ZONE] => 5
                    [1] => Array
                        (
                            [MAILSERVICE] => Priority Mail 3-Day<sup>™</sup>
                            [RATE] => 14.05
                        )

                )

        )

)

1 个答案:

答案 0 :(得分:0)

数组键区分大小写,所以......

return $params['RATEV4RESPONSE']['1ST'][1]['RATE'];

应该这样做