Daeho's Dev Blog

스크립트 안에 PHP foreach 돌려서 값 추출

가이드#PHP#JavaScript#foreach

PHP 배열 값을 JS에서 써야 할 때. script 태그 안에서 foreach를 돌려서 if 문을 찍어내는 방식으로 처리함.

<?php $array = ['a' => 1, 'b' => 2]; ?>

<script>
let name = 'a';
let result = "";
<? foreach($array as $key => $val) { ?>
	if("<?=$key?>" == name) {
		result = "<?=$val?>";
	}
<? } ?>
</script>

PHP가 서버에서 foreach를 돌면서 키·값 쌍마다 if 문을 하나씩 만들어줌. 렌더링된 결과물은 이렇게 됨.

<script>
let name = 'a';
let result = "";
if("a" == name) {
	result = "1";
}
if("b" == name) {
	result = "2";
}
</script>

JS 입장에선 그냥 하드코딩된 if 문 덩어리라 name에 맞는 값이 result에 들어감.

다른 방법: json_encode

배열을 통째로 JS 객체로 넘기는 방법도 있음. 이러면 if 문 찍어낼 필요 없이 키로 바로 꺼냄.

<script>
let array = <?= json_encode($array) ?>;  // {"a":1,"b":2}
let result = array['a'];
</script>

배열이 크거나 키가 많으면 이쪽이 깔끔함.