2016-07-29 2 views
0

서비스가 실행 중인지 여부를 테스트하는 스크립트가 있는데, 일부 조정이 이루어져 조금 붙어 있습니다. 원래 스크립트에는 URL에 제공된 데이터를 기반으로 실행 된 배열이있었습니다. 나는 내가 $ 상태 배열에있는 모든 국가에 대한 첫 번째 배열을 통해 루프에 걸려두 배열의 일부를 함께 결합합니다.

$states = array(
    "California" => array(
     "abbr" => "CA", 
     "city" => "Sacramento", 
     "zip" => "95632" 
    ), 
    "Washington" => array(
     "abbr" => "WA", 
     "city" => "Seattle", 
     "zip" => "98101" 
    ), 
); 

: 나는 모양 (다차원) 두 번째 배열을

$request = array(
    "pe" => $_REQUEST['number'], 
    "key" => "1234", 
    "City" => "San Antonio", // This will be overwritten by data from the states array 
    "State" => "Texas", // This will be overwritten by data from the states array 
    "fname" => "John", 
    "lname" => "Doe", 
    "ZipCode" => "78201", // This will be overwritten by data from the states array 
    "Email" => "[email protected]", 
    "Phone" => "2225550000", 
); 

: 것 같습니다 $ request 배열의 값을 $ states 배열의 값으로 대체하려고합니다.

나는하여 $ 상태 배열을 통해 반복하고 있습니다 :

foreach ($states as $state => $details) { 
    if ($request['City'] == $details['city'] AND $request['State'] == $details['abbr'] AND $request['ZipCode'] == $details['zip'] AND $request['County'] == $details['county'] AND $request['PropertyCity'] == $details['city'] AND $request['PropertyState'] == $details['abbr'] AND $request['PropertyZip'] == $details['zip']) { 
     $state = $details['state']; 
     $abbr = $details['abbr']; 
     $city = $details['city']; 
     $county = $details['county']; 
     $zip = $details['zip']; 
} 

하고 $ 요청 배열에 대한 그 변수를 사용하여.

은 현재 내가처럼 보이는 결과를 받고 오전 그것은 단지 $ 요청 배열을 실행할 때 다음

$current = array(
     "pe" => "2", 
     "key" => "1234", 
     "City" => "Sacramento", 
     "State" => "California", 
     "fname" => "John", 
     "lname" => "Doe", 
     "ZipCode" => "95632", 
     "Email" => "[email protected]", 
     "Phone" => "2225550000", 
    ) 

나는 새 값에서와 모든 주에 대해 $ 요청 배열을 통해 루프 필요 $ states 배열은 모든 상태에 대해 비슷한 결과를 반환합니다.

내가 얻을 찾고 결과는 다음과 같습니다

$result = array(
    array(
      "pe" => $_REQUEST['number'], // 2 
      "key" => "1234", 
      "city" => "Sacramento", 
      "state" => "California", 
      "fname" => "John", 
      "lname" => "Doe", 
      "ZipCode" => "95632", 
      "Email" => "[email protected]", 
      "phone" => "2225550000", 
    ), 
    array(
      "pe" => $_REQUEST['number'], // 2 
      "key" => "1234", 
      "city" => "Seattle", 
      "state" => "Washington", 
      "fname" => "John", 
      "lname" => "Doe", 
      "ZipCode" => "98101", 
      "Email" => "[email protected]", 
      "phone" => "2225550000", 
    ) 
); 

그러니까 기본적으로 무슨 일이 일어나고 있는지 작동 및 값 대체지고 있지만 한 번 일어나고, 나는에 규정 된 바와 같이 두 개의 배열이 반환해야 할 필요가 있다는 것입니다 내 $ 결과 배열.

+0

예상되는 출력의 예를 제공 할 수 있습니까? – naomik

+0

내 질문을 편집하고 예상 출력을 추가했습니다. @naomik – kemosabe

+0

당신이이 질문에 내가 잘못한 것에 대한 정보를 저에게 제공 할 수 있습니까? 나는 여기서 다른 사람들이하는 것처럼 내가 가지고있는 문제들을 배우고 해결하려고 노력하고있다. 피드백없이 질문을 마감/축소하면 OP가 문제를 해결하고 앞으로 더 나은 질문을하는 방법을 알 수 없습니다. 나는 내 질문을 몇 번 편집했고 나는 올바른 길을 가고 있다는 것을 전혀 깨닫지 못했다. – kemosabe

답변

0

배열을 결합 할 필요는 없습니다. 이 코드는 정보 뭔가 일치시, 주 경우, 우편 번호 그 바르 ($ 상태를 요청 비교

foreach($states as $stateName => $stateInfo) { 
    if($request['City'] == $stateInfo['city']) AND $request['State'] == $stateInfo['abbr'] AND $request['ZipCode'] == $stateInfo['zip']) { 
     $state = $details['state']; 
     $abbr = $details['abbr']; 
     $city = $details['city']; 
     $county = $details['county']; 
     $zip  = $details['zip']; 
    } 
} 

, $ : 당신의 배열은 키를 공유하지 않기 때문에이 솔루션은 당신이 뭔가를해야 문제를 적합하지 않습니다 abbr, $ city, $ county, $ zip)이 채워집니다.

+0

이 제안은 루프를 통해 여러 항목을 확인하지만 이제는 정의되지 않은 인덱스 오류가 많이 발생한다는 사실을 보여줍니다. $ details 배열이나 $ state 변수에 $ details [ 'state']를 추가 하시겠습니까? 다른 제안? – kemosabe

관련 문제