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

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

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

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

Q&A

解決済

3回答

602閲覧

連想配列の値を変数にして同じ値をセットしたい

umauman

総合スコア57

PHP

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

0グッド

0クリップ

投稿2018/12/03 19:52

前提・実現したいこと

下記の連想配列の値(aaa、bbb、ccc)を変数にして
同じ値を代入したく思っています。

php

1$array = array( 2 'あああ' => 'aaa', 3 'いいい' => 'bbb', 4 'ううう' => 'ccc', 5);

下記の結果になるようにしたいです。

php

1$aaa = '同じ値'; 2$bbb = '同じ値'; 3$ccc = '同じ値';

ひとまずは下記で思うような結果は得られたのですが、このような書き方は
問題無いでしょうか?($$が二つ)
また、もっと簡潔に記述する方法はありますか?

php

1//ひとまずこれでいけたのですが... 2foreach ($array as $key => $value) { 3 $$value = '同じ値'; 4} 5

初歩的な質問で恐れいりますがどうぞよろしくお願いします。

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

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

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

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

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

guest

回答3

0

PHPは変数の値で変数を作れるので問題ないかと言われたらそういう事が出来る言語なので問題ないのでちゅが、
どっちかっていうと、こういう書き方をした方が良いと思うのでちゅ。

PHP

1foreach ($array as $key => $value) { 2 ${$value} = "同じ値"; 3}

{ } でくくられた変数は、強制的に変数展開されるのでちゅ。

ストリングの中に変数展開する時などに前後の文字の関係で展開されないケースを防ぐ事ができるので、おちゅちゅめでちゅ。

なお、特別な理由がない限り、ストリングをくくるのはシングルクオートではなくダブルクオートの方が良いでちゅ。

理由は使っていればわかるのでちゅ。
実際、今まで見たなかで、シングルクオートを使ってる人でまともなプログラムを書ける人を見たことがないでちゅ。そういう人は、物事の合理性というものを全く理解できないので、まともなプログラムコードが書けるわけがないのでちゅ。

投稿2018/12/03 22:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

umauman

2018/12/04 02:41

参考になりました。ありがとうございます。
guest

0

ベストアンサー

問題ありませんよ。

あえて簡潔に書くならば、

foreach ($array as $value) { $$value = '同じ値'; }

投稿2018/12/04 00:22

kasa0

総合スコア578

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

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

umauman

2018/12/04 02:43

なるほど。勉強になりました。($$も問題無いのですね) ありがとうございました!
guest

0

取り出し値に「同じ値」ならそれで問題はないとは思いますが、
元の配列の値を変えるならこんなやり方はどうでしょうか。

php

1<?php 2$array = array( 3 'あああ' => 'aaa', 4 'いいい' => 'bbb', 5 'ううう' => 'ccc', 6); 7 8array_walk($array, function(&$item) { 9 $item = "同じ値"; 10}); 11 12var_dump($array);

出力結果:

array(3) { ["あああ"]=> string(9) "同じ値" ["いいい"]=> string(9) "同じ値" ["ううう"]=> string(9) "同じ値" }

投稿2018/12/03 21:57

m.ts10806

総合スコア80765

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

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

m.ts10806

2018/12/03 21:58

あ。「値を変数」か・・・
umauman

2018/12/04 02:40

ありがとうございます。配列の全部を一括処理できる関数があるのですね。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問