質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6261閲覧

連想配列のキーが重複した場合に、「key1」「key2」...と名前を変えて格納したい。

Kaede_Sugano

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/07/11 12:15

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
PHPで連想配列を使うシステムを作っています。
連想配列のキーが重複した場合に、「key1」「key2」...と名前を変えて格納したいです。

###ソースコード

PHP

1$foods = ['fruits' => ['apple','banana','mango'], 2 'drinks' => ['milk','tea','water'], 3 'snacks' => ['sweet','cake','chips']];

この配列に、例えば

PHP

1'fruits' => ['orange','mango']

を追加するときに、すでにfruitsというキーが使われているので、これをfruits1に変えたいです。(繋げたくはありません)
また、いくら足しても、その数字は1,2,3,4,5,6,7,8...と増えて欲しいです。

###補足情報
PHP7.0、PHPStormで現在開発を行っています。

ご教示お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

その仕様をそのまま実装しようとすると、たとえば格納されたキーが "boeing787" だとすると、"boeing787" なのか、"boeing78" が8回重複したのか、"boeing7" が79回重複したのか、以下略・・・ と判断ができずバグの温床になってしまうと思います。

重複管理用のサブキーを加えた多次元配列にすると実装が楽になる気がします。

php

1$foods = []; 2 3$foods['fruits'][] = ['apple','banana','mango']; // $foods['fruits'][0] 4$foods['drinks'][] = ['milk','tea','water']; 5$foods['snacks'][] = ['sweet','cake','chips']; 6 7$foods['fruits'][] = ['orange','mango']; // $foods['fruits'][1] 8 9print_r($foods);

あとは取り出すときにメインキーとサブキーを文字連結するか、または完成形の配列を作り直すなどすればよいと思います。

php

1// 取り出すときにキー名を作る例 2foreach ($foods as $id => $arr) { 3 foreach ($arr as $subid => $values) { 4 print($id . ($subid ? $subid : '') . ': ' . implode($values, ', ') . \PHP_EOL); 5 } 6}

投稿2017/07/11 14:52

編集2017/07/11 14:56
miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問