array("BDS" => "Badakhshan", "BDG" =>"> array("BDS" => "Badakhshan", "BDG" =>"> array("BDS" => "Badakhshan", "BDG" =>" />

PHPの多次元配列のヘルプが必要

私はこの配列を持っています(この質問のために短縮されています)、国に基づいて地域情報をテーブルに挿入するために、country_code( "AF"と "AL")を抽出する必要があります。

配列を反復処理している間に国コードを取得するにはどうしたらよいですか?

$countries = array("AF" => array("BDS" => "Badakhshan",
                                 "BDG" => "Badghis",
                                 "BGL" => "Baghlan",
                                 "BAL" => "Balkh",
                                 "BAM" => "Bamian",
                                 "DAY" => "Daykondi"),
                   "AL" => array("BR" => "Berat",
                                 "BU" => "Bulqizë",
                                 "DL" => "Delvinë",
                                 "DV" => "Devoll",
                                 "DI" => "Dibër",
                                 "DR" => "Durrës",
                                 "EL" => "Elbasan",
                                 "FR" => "Fier")
);

foreach ($countries as $country) {
  $country_code = $country[];//How do I get the country code here?
  foreach ($country as $region_code => $region_name) {
   //insert region info into table
  }//foreach ($country as $region_code => $region_name)
}//foreach ($countries as $country)
1

4 答え

foreach($countries as $code => $list) {
 foreach($list as $rcode => $name) {

 }
}

コードとrcodeは2つの地域コードを持ちます

私は私のコメントで言及した、それが唯一の方法だったが、私は訂正した

foreach($countries as $country)
{
        $code = array_keys($countries, $country);
        $code = $code[0];
}

あなたが探しているものを得るかもしれない、それを行うには超奇妙な方法、そして私はそれを使用することを示唆しない。最初の方法はより良い

4
追加された
私の質問を無視 "配列を反復しながら国コードを取得する方法"
追加された 著者 MB34,
シンプルでエレガントな^ _ ^
追加された 著者 Neal,

Your array is setup with key => value pairs, meaning you have a value, and an identifier for that value.

$myArray = array( "Key" => "Value" );

または、あなたのコードの場合:

$myArray = array( "Country Code" => array( "Region" => "Codes" ) );

ルーピング中にキーを取得する場合は、次の構文を使用します。

foreach ( $myArray as $key => $value ) {
  echo $key;//"Country Code"
  foreach ( $value as $region_key => $region_code ) {
    echo $region_key;//Region
  }
}

これで、各反復で識別子にアクセスできるようになりました。

2
追加された
MB34、これは私が投稿したのと同じことです。他の人が投稿したものと同じもの
追加された 著者 Ascherer,
私の投稿では「コードとrcodeは2つの地域コードを持つ」と言った
追加された 著者 Ascherer,
パーフェクト、ちょうど私が探していたもの。
追加された 著者 MB34,
[引用]これは私が投稿したのと同じものです。[/引用]それはどちらでもありませんでした。それはcountry_codeを取得する方法を示し、あなたはもともとはありませんでした。私はジョナサンのポストを答えとして受け入れている。
追加された 著者 MB34,
正確な同等ですが、whileループを使用します。 stackoverflow.com/a/9164501/1165128
追加された 著者 Melvin Protacio,

さて、ネストされたループで既に使用しています。

foreach ($countries as $country_code => $country) {
    foreach ($country as $region_code => $region_name) {
       //foobar
    }
}

次に、変数 $ country_code に国コードが格納されます。

1
追加された
私の質問を無視 "配列を反復しながら国コードを取得する方法"
追加された 著者 MB34,
いいえ、私はしませんでした。申し訳ありませんが、変数 $ country_code が国コードを保持することは明らかでした。私はそれを明確にするために私の答えを編集しました。
追加された 著者 Carsten,
while($country = current($countries)){
    while($region = current($country)){
        echo "region:".$region."(".key($country).")"." country:".key($countries);
        next($country);
    }
    next($countries);
}
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com