• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列で特定キーが同じ値だった場合のみ、特定キー連結)

配列で特定キーが同じ値だった場合のみ、特定キー連結

このQ&Aのポイント
  • 配列の特定キーが同じ値である場合、その特定キーと値をまとめたい場合があります。
  • 例えば、idが同じ配列が複数ある場合、idごとにpreとpre_idをまとめたいとします。
  • 修正を行うと、同じidがある場合にpreとpre_idをまとめることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

質問者さんの意図している「まとめる」という作業はどういうものでしょうか [pre] => '東京','大阪' [pre_id] => 7,2 というのは文字列や整数値の表現としてあり得ません。その部分を補足してください。 もし、 [pre] => '東京,大阪' [pre_id] => '7,2' になっていいのなら下記のように書けるとは思います。 <?php $source = array(); $source[] = array('id'=>1, 'pre'=>'東京', 'pre_id'=>7, 'rank'=>'A'); $source[] = array('id'=>1, 'pre'=>'大阪', 'pre_id'=>2, 'rank'=>'A'); $source[] = array('id'=>4, 'pre'=>'名古屋', 'pre_id'=>3, 'rank'=>'B'); $target = array(); foreach ($source as $item) { $id = $item['id']; foreach ($target as $skey=>$out) { if ($out['id'] === $id) { $outkey = $skey; } } if (!isset($outkey)) { $target[] = $item; } else { $target[$outkey]['pre'] .= ',' . $item['pre']; $target[$outkey]['pre_id'] .= ',' . $item['pre_id']; unset($outkey); } } print '<pre>'; print_r($source); print_r($target); print '</pre>';

re97
質問者

お礼

回答ありがとうございました。 おかげでうまくいきましたー >もし、 >[pre] => '東京,大阪' >[pre_id] => '7,2' >になっていいのなら ・意向を汲み取っていただきありがとうございます ・これをやりたかったです

その他の回答 (2)

noname#244856
noname#244856
回答No.3

「まとめる」というのが、配列でまとめるのか、文字列のカンマ区切りでまとめるのか明示されていない。 「同じidがあったときだけ(3つ以上の可能性もあり)、[pre] [pre_id]をまとめたい」 → [rank] はどうなるの?

re97
質問者

お礼

回答ありがとうございました。 >「まとめる」というのが、配列でまとめるのか、文字列のカンマ区切りでまとめるのか明示されていない ・文字列カンマ区切りの意味で質問しました ・ちなみに、配列でまとめることも可能なのでしょうか? >→ [rank] はどうなるの? ・同じidでないときは、そのままの表示を希望でした ・明記していなかったので、次回から気をつけますー

回答No.2

ひどいな。 わからないのではなく、考えも調べも何もせずに他人にソース書かせてるだけじゃないか。

関連するQ&A