(PHP)連想配列で複数のvalueを指定したい。


「人物名」キーに「身長・体重・座高」という3つのvalueを指定したいです。
$person = array (
 "斎藤さん" => "175",
 "佐藤さん" => "170",
 "高橋さん" => "165"
);
一般的に解説されている連想配列では、このようにひとつのvalueしか指定することができません。
できる方法はありますか? またその場合、値の取り出し方はどのように行いますか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2016/04/15 01:36:55

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

入れ子にできます。
連想配列の内側に、また連想配列です。

<?php

$person = array(
    '斎藤さん' => array( '身長' => '175', '体重' => '60', '座高' => '85'),
    '佐藤さん' => array( '身長' => '170', '体重' => '70', '座高' => '80'),
    '高橋さん' => array( '身長' => '165', '体重' => '80', '座高' => '82') 
);

print_r($person);
print($person['佐藤さん']['体重'])
?>
id:pocapontas

ご返信ありがとうございます。
連想配列の中に連想配列を入れる記述は初めてみました。助かりました!

2016/04/15 01:40:47
id:a-kuma3

「それを何と呼ぶのか」が分からないと、検索もままならないですよね。
今回のは「入れ子」がキーワードだったかも。
php 連想配列 入れ子 - Google 検索

こんなキーワードでも、それなりに引っかかる。
php 連想配列の中に連想配列 - Google 検索
php array の中に array - Google 検索

Google の検索結果で引っかかったページを見てみると「多次元配列」という書き方をしてる人も多いようだけど、それは違うなあ。

2016/04/15 02:09:08

その他の回答2件)

id:siseiall No.1

回答回数36ベストアンサー獲得回数2

http://web-items.blog.so-net.ne.jp/2012-09-22
php]C言語のような構造体をつくる

これみてください。全部のってます。

1、クラス(≒構造体)をつくる。
2、そのクラスの配列を作る

がんばってください。

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

入れ子にできます。
連想配列の内側に、また連想配列です。

<?php

$person = array(
    '斎藤さん' => array( '身長' => '175', '体重' => '60', '座高' => '85'),
    '佐藤さん' => array( '身長' => '170', '体重' => '70', '座高' => '80'),
    '高橋さん' => array( '身長' => '165', '体重' => '80', '座高' => '82') 
);

print_r($person);
print($person['佐藤さん']['体重'])
?>
id:pocapontas

ご返信ありがとうございます。
連想配列の中に連想配列を入れる記述は初めてみました。助かりました!

2016/04/15 01:40:47
id:a-kuma3

「それを何と呼ぶのか」が分からないと、検索もままならないですよね。
今回のは「入れ子」がキーワードだったかも。
php 連想配列 入れ子 - Google 検索

こんなキーワードでも、それなりに引っかかる。
php 連想配列の中に連想配列 - Google 検索
php array の中に array - Google 検索

Google の検索結果で引っかかったページを見てみると「多次元配列」という書き方をしてる人も多いようだけど、それは違うなあ。

2016/04/15 02:09:08
id:psne No.3

回答回数605ベストアンサー獲得回数334

<?php
$person=[
		"斎藤さん" => ["身長" => 160,"体重" => 60,"座高" => 100],
		"佐藤さん" => ["身長" => 170,"体重" => 61,"座高" => 101],
		"高橋さん" => ["身長" => 180,"体重" => 62,"座高" => 102]
];
var_dump($person);
echo $person['佐藤さん']['身長'];
echo "<br>\n";
echo $person['高橋さん']['座高'];

古いPHPを使わない という心構えで書くと、このような使い方が便利です。

http://php.net/manual/ja/language.types.array.php

array (size=3)
  '斎藤さん' => 
    array (size=3)
      '身長' => int 160
      '体重' => int 60
      '座高' => int 100
  '佐藤さん' => 
    array (size=3)
      '身長' => int 170
      '体重' => int 61
      '座高' => int 101
  '高橋さん' => 
    array (size=3)
      '身長' => int 180
      '体重' => int 62
      '座高' => int 102

170
102
他1件のコメントを見る
id:psne

界隈の事は、コアな方の意見を参考にしてもらう様にして頂ければと思います。
「古いPHPを使わない という心構え」は、例えば5.4.x未満でこの書き方をした場合エラーになりますが、書き方を直すより環境を更新して安全で便利な環境にした方が良いですよね。という個人の見解となります。

また、PHPは同じ動作でも様々な書き方があるので、フレームワーク等のルールに沿うかマニュアルにある書き方で良いとも思います。
#arrayはdeprecatedになる事はまず無いですが、古い環境は更新しなければなりません

2016/04/14 23:50:39
id:pocapontas

>> ぽけっとしすてむ 様
ご返信ありがとうございます。
[ ] でくくるやり方もできるのですね。参考になります!

2016/04/15 01:41:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません