2016-07-29 11 views
0

サービスが実行されているかどうかをテストするスクリプトがありますが、これを調整して少し止まってしまいました。もともとスクリプトには、URLに提供されたデータに基づいて実行された1つの配列がありました。私は$の状態配列を持っているすべての状態のための最初の配列をループしたいと思っています2つの配列の部分を組み合わせる

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

だから、基本的に何が起こっているかは、それが動作し、値が置き換えなっているが、それは一度だけ起こっていることで、私は2つの配列を持っている必要があります私が提供として返さ私の結果配列。

+0

期待される出力の例を挙げることができますか? – naomik

+0

質問を編集し、予想される出力を追加しました。 @naomik – kemosabe

+0

あなたが私にこの質問に間違ったことに関する情報を提供することはできますか?他の誰かがやっているように私が抱えている問題を学び解決しようとしています。フィードバックなしに質問を締め切りすることは、問題を解決する方法を知っていて、今後より良い質問をするのに役立ちません。私は私の質問を数回編集したし、私が正しい道にいることを何の印象も与えていない。 – kemosabe

答えて

0

あなたの配列を組み合わせる必要はありません。このコードは、情報と何かが一致市、州場合は、郵便番号、これらのVARS($状態を要求比較

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配列に$ details ['state']を追加するか、$ state変数だけを追加することをお勧めしますか?その他の提案はありますか? – kemosabe

関連する問題