2016-07-29 4 views
0

У меня есть сценарий, который проверяет, работает ли служба или нет, я вношу некоторые коррективы и немного застрял. Первоначально скрипт имел один массив, который он выполнял на основе данных, предоставленных в URL-адресе. Это выглядит следующим образом:объединить части двух массивов вместе

$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", 
); 

У меня есть второй массив (многомерный), который выглядит как:

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

Я хотел перебрать первый массив для всех состояний, которые у меня есть в массиве $ состояний но я хочу заменить значения в $ 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", 
    ) 

мне нужен его цикл по массиву $ запроса для каждого государства с новыми значениями из массивы $ state и возвращают аналогичный результат для каждого состояния.

В результате я ищу, чтобы получить это:

$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", 
    ) 
); 

Так в основном то, что происходит в том, что она работает и ценности становятся заменены, но это происходит только один раз, мне нужно иметь два массива возвращаются как я предоставил в my $ result array.

+0

Вы можете представить пример ожидаемого выхода? – naomik

+0

Я отредактировал свой вопрос и добавил ожидаемый результат. @naomik – kemosabe

+0

Может ли кто-нибудь из вас предоставить мне информацию о том, что я сделал не так с этим вопросом. Я пытаюсь изучить и решить проблемы, которые у меня есть, как и все, что здесь делают. Закрытие/опрос вопросов без обратной связи не помогает ОП знать, как решить проблему и задавать лучшие вопросы в будущем. Я несколько раз редактировал свой вопрос и не получил никаких намеков, что я на правильном пути. – 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'] в массив $ request или просто переменную $ state? Любые другие предложения? – kemosabe