2017-01-06 61 views
0

私は地域と州を持つ配列を持っています。各地域には複数の州があります。私は州の配列を検索して、それがどの地域にあるのかを教えてもらいたいのです。私が探している状態は、最終的にフォームの投稿を介してこの関数に渡されます。PHP多次元配列検索のキーを返します

ここで私がin_arrayやカスタム関数のように見いだしたいくつかのことを試しましたが、うまく動作していないようです。私はPHP 5.3.27を使用しており、5.5以上にアップグレードすることはできませんので、以前のバージョンで利用可能な機能に頼らざるを得ません。ここで

は私の配列です:

$regions = array("SE" => array("NC","SC","GA","KY","AL","LA","MS","FL","TN"), "MW" => array("IN","IL","OH","WI","MI"), "SW" => array("MO","OK","KS","AR","TX"), "W" => array("CA","NV")); 
+0

どのように動作するはず? – Rizier123

+0

foreachループで 'array_contains()'を使ってリージョンを繰り返し処理してください。あなたがヒットしたときに中断してください。 – arkascha

+0

この時点では、配列以外のコードは実際にはありません。私が試したすべての作品コードは実際に働いていません。 –

答えて

0

これはあなたの現在のコードがどのように見えるん

<?php 
$state = $_POST["whatever"]; 

$regions = array("SE" => array("NC","SC","GA","KY","AL","LA","MS","FL","TN"), "MW" => array("IN","IL","OH","WI","MI"), "SW" => array("MO","OK","KS","AR","TX"), "W" => array("CA","NV")); 
foreach ($regions as $key => $region){ 
    if (in_array($state, $regions[$key])){ 
     echo $key; 
     break; 
    } 
} 
?> 
+0

これは完全に機能します。ありがとう、私はそれが欲しい情報を取得する方法がわからなかったので、配列などで特に良いです。 –

+0

@JasonM問題ありません。 'echo'の後に' break; 'を呼び出すとループが止まります。 –