web関連

【javascript,php】forEachの違いについて

2020/10/16

phpだと結構使うforeachなんだけど、javascriptの時の書き方が思っていたより違ったので頭の整理がてら書き出し

javascriptとphpのforeachの違い

まずはコード

<script>
const students = ["田中", "佐藤", "鈴木"];
students.forEach((student) => {
	console.log(student);
});
</script>

<?php 
$students = ["田中","佐藤", "鈴木"];
foreach($students as $stundent){
	echo $stundent;
}
?>

javascriptのforEach()はメソッドで
phpのforeach()はif()とかと同じ構文だわ

全然違うね(確認)

ちなみにjavascriptのforEach()の引数に指定している関数だけど、コールバック関数って呼ばれているみたい

(student) => {
	console.log(student);
}

es5だとこうだね

function(student){
	console.log(student);
}

コールバック関数は調べたらちょっと深そうだったからまた後で調べ直すかな…

おまけ:配列宣言の違い

書いてて気づいたけどjavascriptもphpも配列の宣言似てたんだけど、一つ違うところがあったので備忘録
それぞれ2種類あったわ

<script>
const students = ["田中", "佐藤", "鈴木"];
const students = new Array("田中", "佐藤", "鈴木");
</script>

<?php
$students = ["田中","佐藤", "鈴木"];
$students = array("田中","佐藤", "鈴木");
?>

大体一緒なんだけど、javascriptだけnew Array()って「new」使ってんね

「配列のコンストラクタ」って呼ばれている宣言方法みたいだけどnew Array()でインスタンスを生成するときの初期化をコンストラクタって言うみたい

よくわからんけど、Arrayというオブジェクトがあってそれをインスタンスとして呼び出す際に"田中", "佐藤", "鈴木"という初期値を入れることをコンストラクタって言うのかな?

まぁ、javascriptとphpに共通で[]が使えるからそっち使えばいっか

javascriptとphpって書き方が似てて結構ごっちゃになるからこうやって書き出して理解をする必要があるわ