web関連

【javascript,php】連想配列の書き方の違い

phpとjavascriptの連想配列の値の取得方法がごっちゃごちゃになるので頭の整理がてら備忘録

javascriptとphpの連想配列の違い

// javascript
<script>
const characters = [
	{'name' : '田中', 'age' : 3},
	{'name' : '佐藤', 'age' : 32},
	{'name' : '鈴木', 'age' : 140}
];
characters.forEach((character) =>{
	const name = character.name;
	const age = character.age;
	console.log(`${name}は${age}歳です。`);
	// 田中は3歳です。
	// 佐藤は32歳です。
	// 鈴木は140歳です。
});
console.log(characters[0]["name"]);// 田中
</script>

// PHP
<?php 
$characters = [
  array('name' => '田中', 'age' => 3),
  array('name' => '佐藤', 'age' => 32),
  array('name' => '鈴木', 'age' => 140)
];
foreach ($characters as $character) {
	$name = $character["name"];
	$age = $character["age"];
	echo "{$name}は{$age}歳です。<br>";
	// 田中は3歳です。
	// 佐藤は32歳です。
	// 鈴木は140歳です。
}
echo $characters[0]["name"];// 田中
?>

微妙だけど書き方違うね
ちょっと詳細についてまとめる

連想配列の違い

どう違うのか理解するために以下に書き出してく

javascriptの連想配列は{…}波括弧で囲む必要がある
連想配列じゃなくてオブジェクトって呼ばれこともある
キー(key)と値(value)を持つ

obj = {
   "key1":"val1",
   "key2":"val2"
};

キー(key)の事をプロパティとも呼び、キーはクォーテーションで囲んでも囲まなくても使える

あと、javascriptはキー(プロパティ)へのアクセス方法が2パターンある

characters[0].name;// 田中
characters[0]["name"];// 田中
次、php

phpの連想配列はインデックスの代わりにキーと値を使った配列
あくまで配列

array = [
   'key1'=>'val1',
   'key2'=>'val2'
];

phpの方はキーをクォーテーションで囲まないとエラーになる

ちなみにシングルクォーテーションを使ったほうがいいみたい
というのも、phpってダブルクォーテーションで囲むと変数と文字列をまとめて書くことができる変数展開というモノがある

// こんなの(変数展開)
echo "{$name}は{$age}歳です。<br>";

で、この変数展開ってダブルクォーテーションでしか使えなくて、シングルクォーテーションだと変数が展開されなく文字列でそのまま出力されちゃうんだよね
そういうことからシングルクォーテーションを普段から使ってれば、変数展開の記述かどうか見分けつけやすいって意味だと思う、たぶん

変数展開については以前調べたことがあるのでリンク貼っておく

【PHP】「変数展開」で「.(ドット)」を使わず文字列と変数を繋げる方法 | web関連 | 二色人日記。

それからphpの方には
{}波括弧を使った構文?は基本ないみたい(変数展開は別)

追記(20201024):あ、phpのクラスを作るのに{}使ってた

javascriptの連想配列で使ってるから一応メモ

最後にphpの連想配列の取り出し方は

echo $characters[0]["name"];// 田中

ここの部分がjavascriptとごっちゃになってcharacters[0].nameで取得できるのかな?って思い今回の備忘録に至る

phpの方もキーの事をプロパティ呼びするのかよくわからないんだけどアクセス方法は一つだけだと思う

ちなみにphpのオブジェクトだったらプロパティが存在するから

characters[0]->name

ってプロパティにアクセスできたりするみたい

最近phpとjavascriptの書き方の違いばっかり調べてるけど結構似てるようで今回みたいに結構違ったりして頭痛くなる

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。