• 締切済み
  • すぐに回答を!

二つの配列を比較してループ処理

配列1 Array ( [東京都] => 1 [神奈川県] => 2 [千葉県] => 4 [群馬県] => 1 [栃木県] => 1 ) 配列2 Array ( [品川区] => 1 [横浜市] => 2 [千葉市] => 1 [船橋市] => 1 [市原市] => 1 [浦安市] => 1 [前橋市] => 1 [宇都宮市] => 1 ) 上記の二つの配列を比較して 東京都 品川区(1) 神奈川県 横浜市(2) 千葉県 千葉市(1) 船橋市(1) 市原市(1) 浦安市(1) 群馬県 前橋市(1) 栃木県 宇都宮市(1) のように整形したいのですが、上手く出来ずに困っております。 どなたかご教授ください。 宜しくお願いいたします。

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数2
  • 閲覧数262
  • ありがとう数5

みんなの回答

  • 回答No.2
  • koke29
  • ベストアンサー率58% (114/196)

>配列1と配列2を比較して配列1のvalに配列2のvalが達していない場合に 配列2のvalを足すループをして、達した場合に次のループに移れればと 考えております。 この法則だと千葉県のデータの持ち方はダメじゃないの? と思ったのと、根本的にデータの扱いが微妙に思いました ※千葉県はこのルールで処理したら 千葉県 千葉市 千葉県 船橋市… みたいな感じで表示されるのでは?? 具体的に何がしたくて、この処理に至ったのかが不明なので何ともですが 配列を使う意味が無い印象を持ちました 配列2のデータが増減したときに、配列1も書き換えしないといけないし 末尾への追加では求める処理が出来ないから面倒じゃないか?と。 何がしたくて、こういう処理なのかを具体的に教えて頂ければ、もっと 有用なアドバイスがつくと思いますよー 一応、提示されたような形式で表示させるサンプルを書いたので 参考に載せておきますね ※データの持ち方の微妙さは変わらずですので、これを使って何かする のはどうかな??とは思いますが <? $array01 = array("東京都"=>1,"神奈川県"=>1,"千葉県"=>4,"群馬県"=>1,"栃木県"=>1); $array02 = array(array("品川区",1),array("横浜市",2),array("千葉市",1),array("船橋市",1),array("市原市",1),array("浦安市",1),array("前橋市",1),array("宇都宮市",1)); $cnt = 0; foreach($array01 as $key => $value){ echo $key."<br>"; for($i = 0; $i < $value; $i++){ echo $array02[$cnt][0]."(".$array02[$cnt][1].")<br>"; $cnt++; } echo "<br>"; } ?>

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • nitho_t
  • ベストアンサー率49% (44/89)

基本的に情報が不足しています。 千葉県に千葉市があることは少なくともこの情報からのみでは紐付けられません。例えば「大森」は東京に存在しますが他にも存在します。地理的に紐付けられる情報がない限り自動的に紐付けることは不可能です。 多分、何か見落としか勘違いをなさっていると思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 わかりづらくて申し訳ございません。 Array ( [東京都] => 1 [神奈川県] => 2 [千葉県] => 4 [群馬県] => 1 [栃木県] => 1 ) 配列2 Array ( [品川区] => 1 [横浜市] => 2 [千葉市] => 1 [船橋市] => 1 [市原市] => 1 [浦安市] => 1 [前橋市] => 1 [宇都宮市] => 1 ) 配列1と配列2を比較して配列1のvalに配列2のvalが達していない場合に 配列2のvalを足すループをして、達した場合に次のループに移れればと 考えております。 この場合、東京都は1なので品川区でループを抜けて、神奈川県も横浜市でループを抜けて、千葉県が4なので千葉市、船橋市、市原市、浦安市をループで回そうと思います。

関連するQ&A

  • phpの再帰処理で平坦な連想配列をツリー化

    phpに関して質問させて頂きます。 最近、phpの勉強を始め、再帰処理でつまづいております。 具体的には、以下の様な連想配列を作り $tourist_spot = array(  'a' => array('日本','東京都','台東区','浅草','浅草寺',10),  'b' => array('日本','東京都','千代田区','大手町','首塚',5),  'c' => array('日本','千葉県','浦安市','舞浜','ディズニーランド',10),  'd' => array('日本','東京都','台東区','浅草','浅草演芸ホール',7), ); この連想配列に、再帰処理をかけて以下ようなツリー状の連想配列を生成しようと試みていますが、どうしても上手く行きません。 基本は添字に値を格納し、末端のみ値を数値として格納する感じです。 array(1) { ["日本"]=>  array(1) {   ["東京都"]=>   array(1) {    ["台東区"]=>    array(1) {     ["浅草"]=>     array(2) {      ["浅草寺"]=>      int(10)      ["浅草演芸ホール"]=>      int(7)     }    }    ["千代田区"]=>    array(1) {     ["大手町"]=>     array(1) {      ["首塚"]=>      int(5)     }    }   ["千葉県"]=>   array(1) {    ["浦安市"]=>    array(1) {     ["舞浜"]=>     array(1) {      ["ディズニーランド"]=>      int(10)     }    }   }  } } コード例などご提示頂けますと幸いですが、ややこしいようであれば、どのような考え方で望めば良いのかだけでもご教示を賜りたく存じます。 お詳しい方いらっしゃいましたら何卒、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 文字列の一部比較について

    エクセルで地区コードと住所の比較をしたいのですが =IF(EXACT(B2,C2),"同じ","違う") 例の様なセルB2とセルC2(一部)の比較はできるのでしょうか? 教えてください。 例     B       C             D  1  地区コード   住所 2   市原市    千葉県市原市八幡     同じ 3   中央区    千葉県千葉市中央区    同じ 4   東京都    東京都墨田区       同じ 5   市原市    千葉県千葉市稲毛区    違う

  • 関東地区に詳しい方

    カテゴリがあってるかわかりませんが・・・ 栃木県宇都宮市・千葉県千葉市・群馬県水上温泉を直線で結び、三角形にしたとき、真ん中の地域はどの辺になるのでしょうか? ちょっとアバウトな質問になってしまいますが、大体でいいのでわかると助かります。 よろしくお願いします。

  • 東京電力の電気料金は地域によって異なったら?

    もし、東京電力の電気料金は地域によって異なったらどうなりますか? 例 東京電力の家庭用電気料金は、1kWh当たり25円とすると 東京23区の都心部A(千代田区・港区) 90円 東京23区の都心部B(中央区・渋谷区・文京区) 70円 東京23区の都心部C(新宿区・豊島区) 50円 東京23区の南部(目黒区・世田谷区・品川区・大田区田園調布エリア) 60円 東京23区足立区 30円 東京23区その他 40円 東京都多摩地域(武蔵野市) 60円 東京都多摩地域(東側) 40円 東京都多摩地域(西側) 25円 千葉県(松戸市・市川市・柏市などの北西地域) 20円 千葉県(市原市・木更津市などの市原市以南・成田市などの成田市以東) 16円 埼玉県 20円 茨城県 16円 群馬県 16円 栃木県 16円 神奈川県(その他) 25円 神奈川県(川崎市・横浜市) 35円 神奈川県(横浜市中区) 60円

  • グループインタビュー会場を探しています。

    北関東3県(茨城・栃木・群馬)で格安な、でもきれいで設備の整っているグループインタビュー会場があれば、教えていただきたいのですが。 希望の場所は、茨城は水戸周辺。群馬は前橋か高崎。栃木は宇都宮周辺です。 どこか一つの場所でも構いませんので教えてください。 お願いします。

  • 占い肯定派の皆様、関東地方に大きな地震は西暦何年何月何日に起こりますか?

    大きな地震 = マグニチュード7以上 関東地方 = 茨城県、栃木県、群馬県、埼玉県、千葉県、東京都、神奈川県 としています。地震が急に来たら怖いので、いつ来るのか教えてください。

  • 11月に群馬旅行

    11月10,11日に群馬に旅行に行きます。 住まいは栃木県宇都宮市。 車で行きます。 ほとんどノープランです(^ー^;) 2日目に群馬県前橋市の世界の名犬牧場に行く予定です。 宿泊先は温泉があるところにしたいのですが、草津・伊香保・軽井沢・水上・・・・ たくさんあって、どこにしようかなと迷ってしまいます。 紅葉も見たいので、温泉街や近くに散歩・紅葉散策できる場所があるところがあればいいなと考えています。 オススメの温泉地教えていただきたいです。

  • 2次元配列を1次元配列にするには

    array(2){ ["北海道"]=> array(2) { [0]=> string(9) "札幌市" [1]=> string(9) "函館市" } ["青森県"]=> array(2) { [0]=> string(9) "青森市" [1]=> string(9) "弘前市" } } 以上のような配列から北海道と青森県を取り出して array('北海道', '青森県') といったような処理をしたいのですが、どなたかご教示お願いいたします。

    • ベストアンサー
    • PHP
  • エクセルで文字列の乱数を作るには?

    例えば、 東京都、千葉県、神奈川県、栃木県、埼玉県、群馬県、茨城県の 7個の文字列があったとしまして、 エクセルでこの7個の文字列のうち5つをランダムで選んで結合し、ひとつの文にする方法はありますでしょうか? できれば、各々の間に『の』『と』『や』『が』『に』等の格助詞を入れて文にしたいと思っております。日本語としての意味は分からなくてもかまいません。 このようなひとつの文を各々の文字列が重複しないように順列で大量に作りたいと思っております。 例 1、千葉県の神奈川県に埼玉県の茨城県と群馬県 2、神奈川県と埼玉県の群馬県が千葉県や東京都 ・・・ セルで重複しないようにランダムに表示できれば、ひとつの文にするのはエディタ等でできますので、セルに表示させる段階まででもかまいません。 どうかよろしくお願いします。

  • 思うような連想配列ができない・・

    省略して説明します。 関東,東京,神奈川,千葉 中部,愛知,静岡,岐阜 関西,大阪,兵庫,京都 というCSVデータがあり これを以下のような、連想配列にしたいのですがどうすればよいのでしょうか?? Array (   [0] => Array    (      [0] => 関東      [1] => 東京      [2] => 神奈川      [3] => 千葉    )   [1] => Array    (      [0] => 中部      [1] => 愛知      [2] => 静岡      [3] => 岐阜    )   [2] => Array    (      [0] => 関西      [1] => 大阪      [2] => 兵庫      [3] => 京都    ) ) --------------------------------- CSVデータを、feofで終端まで読み込み feofで一行ずつ取得 explodeでコンマで分解まではできるのですが 上記のような、連想配列ができません・・。 ご教授よろしくお願いします。

    • ベストアンサー
    • PHP