php連想配列を任意の順番に並び替える
解決済
回答 3
投稿
- 評価
- クリップ 0
- VIEW 504
phpで連想配列の以下のような並び替えをしたいです。
その場合どんな方法がありますか。
よろしくお願いします。
並び替え前
array("ringo" => "リンゴ", "mikan" => "ミカン", "budou" => "ブドウ", nashi=> "ナシ", lemon=> "レモン")
並び替え後
array("ringo" => "リンゴ", "budou" => "ブドウ", nashi=> "ナシ", "mikan" => "ミカン", lemon=> "レモン")
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+2
これでいいのかな?
<?php
$source = array("ringo" => "リンゴ", "mikan" => "ミカン", "budou" => "ブドウ", "nashi"=> "ナシ", "lemon"=> "レモン");
$sorter = array("ringo", "budou", "nashi", "mikan", "lemon");
$result = array();
foreach($sorter as $key)
{
if(isset($source[$key]))
{
$result[$key] = $source[$key];
}
}
print_r($result);
echo "<br>";
print_r(array("ringo" => "リンゴ", "budou" => "ブドウ", "nashi"=> "ナシ", "mikan" => "ミカン", "lemon"=> "レモン"));
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
array_mergeは基本的に第一引数のキーの順番が保持される
$arr=[
'a'=>'A',
'b'=>'B',
'c'=>'C',
'd'=>'D',
];
$sorter=['b','c','d','a'];
print_r(array_merge(array_flip($sorter),$arr));
//Array ( [b] => B [c] => C [d] => D [a] => A )
キー値が数値だと意図した通りに動かないのでそこは注意
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
ソート用のキーを渡すならこうです
$a=["ringo" => "リンゴ", "mikan" => "ミカン", "budou" => "ブドウ", "nashi"=> "ナシ", "lemon"=> "レモン"];
$b=["ringo","budou","nashi","mikan","lemon"];
uksort($a,function($x,$y) use ($b){
$k=array_flip($b);
return $k[$x]>$k[$y];
});
print_r($a);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 90.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2018/07/01 13:23
どういう基準での並び替えが必要か、もう少し具体的に提示していただけませんか?
sakiyamaasuka
2018/07/01 13:27
すみません。基準とはどういうことでしょうか。値との関係を維持したまま順番を並び替えたいです。
kei344
2018/07/01 13:33
並び替え後の順序に規則性(たとえば五十音順とか)が感じられないため、何と何を並び替えたいのかがわからないのです。
sakiyamaasuka
2018/07/01 13:38
ご回答ありがとうございます。任意の項目の順番に並び替えたいということです。規則性はないです。
sakiyamaasuka
2018/07/01 13:55
任意のキーの順番にということです。
mts10806
2018/07/01 15:33
規則がないのなら規則を作るしかないと思います。「思った通りに」が任意すぎてはどうしたらいいのか分からないので回答は得られませんよ
sakiyamaasuka
2018/07/01 15:45
ringoの後ろにbudouを差し込みたいといったことが出来ないということですか?規則性のあるソートをしたいということではないです。
mts10806
2018/07/01 15:52
前提としてプログラムは指示した通りにしか動きません。phpには配列操作に関する関数は色々とありますが、それはphpマニュアルで確認してみたのでしょうか?
sakiyamaasuka
2018/07/01 16:02
ちょっと言ってることがよくわからないです。何がどう悪い質問なのかわからないです。プログラムにリンゴ、ブドウ、ナシ、ミカン、レモンの順番に配列を並び替えるように指示したいのですが。規則性をプラグラムに与えて並び替えるのではなく、カラムの順番を固定で指定して並び替えたいのですが。マニュアルを確認しましたが例えば"budou" => "ブドウ"を配列から取り出して配列からbudouをunsetすることはできることがわかりましたが取り出したオブジェクトをリンゴの後ろに追加する方法がわかりません。”リンゴの後ろ”指示は固定です。何か間違った質問の仕方していますでしょうか
mts10806
2018/07/01 16:05
自身で試したコードと参考先が質問に載ってないのが問題です。「質問するときのヒント」読んでみてくださいね。
sakiyamaasuka
2018/07/01 16:11
問題ではないと思いますが。運営の方ですか?
mts10806
2018/07/01 16:12
いいえ。丸投げ質問なのでそうならないようにお願いしているだけです。
mts10806
2018/07/01 16:15
丸投げ質問は非推奨です。説明書やヘルプを読まれてないようなので、それは大問題ですよ?質問は編集できるので、ヘルプを読んだ上で情報を追記してください
sakiyamaasuka
2018/07/01 16:21
意味が分からなかったらスルーすればいいんじゃないですか?パトロールを依頼されているのですか?コードは必須ではないし、こちらもコードを教えてくれとは言っていません。どんな方法があるかという質問をしています。そんなこと言われてこのサービス使う気がなくなりました。そちらの方が問題だと思いますが。
mts10806
2018/07/01 16:25 編集
特に依頼されてもいません。回答するには情報が不足しているから指摘しているだけです。質問内容に不備があれば(的確な)回答つかないのは当然ですよ。必須でないから出さなくていい内容の質問ではありません。
2018/07/02 09:38
複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。