필자가 작성한 일부 PHP를 복사하여 주소를 스크럽했습니다. 원본 페이지에서는 라이브 웹 서버에서 작동하며 완벽하게 작동합니다. 현재 스크립트는 내 개발 컴퓨터의 명령 행에서 실행됩니다. 나는 $ 값 인 print_r을 할 경우PHP에서 색인이 정의되지 않았습니다.
$url = 'http://production.shippingapis.com/ShippingAPI.dll?API=ZipCodeLookup&XML=';
$msg = '
<ZipCodeLookupRequest USERID="xxxxxxxxxx">
<Address ID="0"><FirmName></FirmName><Address1>' . $suite . '</Address1>
<Address2>' . $street . '</Address2>
<City>' . $city . '</City><State>' . $state . '</State>
</Address></ZipCodeLookupRequest>
';
//get the response from the USPS
$newurl = $url . urlencode($msg);
// echo $newurl;
$xml = $newurl;
$parser = xml_parser_create();
// open a file and read data
$fp = fopen($xml, 'r');
$xmldata = fread($fp, 4096);
xml_parse_into_struct($parser, $xmldata, $values);
xml_parser_free($parser);
//echo $xmldata;
//print_r($values);
if ($values[6][tag] === 'ZIP4') {
$street = $values[2][value];
$city = $values[3][value];
$state = $values[4][value];
$zip5 = $values[5][value];
$zip4 = $values[6][value];
}
else if ($values[7][tag] === 'ZIP4') {
$suite = $values[2][value];
$street = $values[3][value];
$city = $values[4][value];
$state = $values[5][value];
$zip5 = $values[6][value];
$zip4 = $values[7][value];
}
else {
$suite = '';
$street = '';
$city = '';
$state = '';
$zip5 = '';
$zip4 = '';
}
;
if ($values[2][tag] != 'ERROR') {
$verifiedBlock = ("
$suite . chr(13) . chr(10);
$street . chr(13) . chr(10);
$city $state $zip5 $zip4
");
}
else {
$verifiedBlock = ("
The address could not be verified
");
}
;
, 나는이 돌아 오기 :
Array ( [0] => Array
(
[tag] => ZIPCODELOOKUPRESPONSE
[type] => open
[level] => 1
)
[1] => Array
(
[tag] => ADDRESS
[type] => open
[level] => 2
[attributes] => Array
(
[ID] => 0
)
)
[2] => Array
(
[tag] => ADDRESS1
[type] => complete
[level] => 3
[value] => FL 7
)
이 코드에서의 CLI 스크립트가 항상 발생 오류 '지수는 정의되지 않은'하지만, 인덱스가 정의된다 나는 [6]과 [7]이 항상 존재 함을 확인했다. 그러나 항상이 라인과 'if ($values[2][tag] != 'ERROR')
'라인에는 '인덱스 정의되지 않음'오류가 발생합니다.
누군가 내가 어리석은 분명한 사실을 알려주시겠습니까? 그것은에
대신'$ values [2] [tag]'$ values [2] [ 'tag']' – Leri
스택 오버플로에 오신 것을 환영합니다! 코드를 올바르게 포맷하십시오. 코드 블록은 모든 코드 행 앞에 4 칸 들여 쓰기하여 삽입됩니다. 이번에는 코드를 포맷했지만 다음 번에 제대로 포맷하십시오. 추가 도움말은 [편집 FAQ] (http://stackoverflow.com/editing-help#code) –