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

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

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

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

Q&A

解決済

2回答

934閲覧

配列のキーと値をセットでランダムに1つ取得するには

yukina00235

総合スコア62

PHP

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

0グッド

0クリップ

投稿2020/05/15 04:30

配列をキーと値をセットでランダムに取得したいのですが…。
調べてみるとarray_rand や shuffleで試すのですが両方セットで取得することができません。
どのように書くとランダムかつキーと値をセットで取り出せますでしょうか?

PHP

1$cap= [ 2 "日本" => "東京", 3 "アメリカ" => "ワシントンD.", 4 "イギリス" => "ロンドン", 5 "イタリア" => "ローマ", 6];

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

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

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

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

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

guest

回答2

0

ベストアンサー

おそらくarray_randでキーが取得できることはわかっているが、そのキーをもとに値を取るには?というのがわかっていない状態かと思います。

$array = ['key' => 'val']; において、値 val を取得するには当然 $array['key'] としますが、この 'key' というのはただの文字列なので、下記でもいけるわけです。

php

1$k = 'key'; 2echo $array[$k]; // -> $array['key']

よって、以下の書き方で取得できます。

php

1<?php 2$cap = [ 3 "日本" => "東京", 4 "アメリカ" => "ワシントンD.", 5 "イギリス" => "ロンドン", 6 "イタリア" => "ローマ", 7]; 8 9$randamized_key = array_rand($cap, 1); 10$randamized_value = $cap[$randamized_key]; 11echo "{$randamized_value}, {$randamized_key}" . PHP_EOL;

投稿2020/05/15 04:47

thyda.eiqau

総合スコア2982

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

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

yukina00235

2020/05/15 05:45

有難うございます。 まずは、配列からランダムに1つ取得し、$randamized_keyにセットですね。 このランダムになったキーを$capにセットして値の取得を$randamized_valueに入れる。 で、それぞれを表示なのですね。 大変わかりやすいご説明有難うございます。 見て、納得して分からなくなってが時々繰り返されますが、こういった考え方が定着できるように頑張ってみたいと思います。感謝申し上げます。mm
guest

0

PHP

1$keys=array_keys($cap); 2shuffle($keys); 3$key=$keys[0]; 4print_r([$key=>$cap[$key]]);

投稿2020/05/15 04:45

yambejp

総合スコア115012

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

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

yukina00235

2020/05/15 05:45

array_keysというのがあるのですね。 これで取得してshuffleする、それを$key=$keys[0]に入れれば0番目は常にランダムになるのでこれで表示という事ですね。有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問