개발자의 끄적끄적

[php] 가변변수 사용법 본문

개발/php

[php] 가변변수 사용법

효벨 2020. 2. 13. 02:00
728x90
반응형

[php] 가변변수 사용법

 

때때로 가변 변수명을 갖을수 있는것다는 것은 편리함을 준다.
즉, 변수명이 유동적으로 설정되거나 사용될수 있다. 일반적인 변수는 다음과 같은 구문에 의해 설정된다:

1

2

3

<?php

$a = 'hello';

?>

가변변수는 변수값을 취해서 변수명으로 취급한다.
위 예제코드는, hello를 두개의 달러사인을 사용하여 변수명으로 사용할수 있다.

1

2

3

<?php

$$a = 'world';

?>

이 지점에서 두 변수가 선언되었고 PHP 심볼 트리에 저장된다: $a는 "hello" 값을 갖고 $hello는 "world" 값을 갖게 된다. 따라서, 이 구문:

1

2

3

<?php

echo "$a ${$a}";

?>

즉, 둘다 hello world를 출력한다.

배열을 갖는 가변변수를 사용하기 위해서는 애매한 문제를 해결해야 한다. 즉 $$a[1]를 쓴다면 해석기는 $a[1]가 변수를 의미하는지 알수 있어야 한다.
또는 $$a가 변수이기를 바라고, [1]가 그 변수의 인덱스인지 알수 있어야 한다. 이런 애매한 문제를 해결하기 위한 문법: 첫번째 목적을 위해 ${$a[1]}과 두번째 목적을 위해 ${$a}[1]을 들수 있다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

 

$nameTypes    = array("first", "last", "company");

$name_first   = "C.m.A";

$name_last    = "뭐야";

$name_company = "chongmoa.com";

 

foreach($nameTypes as $type)

  echo ${"name_$type"} . "<br />";

 

 

echo "$name_first\n$name_last\n$name_company <br />";

?>

 

출력결과

C.m.A
뭐야
chongmoa.com

C.m.A 뭐야 chongmoa.com

 

1

2

3

4

5

6

7

8

9

10

11

<?

    $arr = array("히트상품","추천상품","최신상품","인기상품","할인상품");

    for($idx=0; $idx<$arr_tot; $idx++) {

        $_tmp_cma_type = ${"cma_type".($idx+1)};

?>

    <label>

        <input type="checkbox" name="cma_type<?=($idx+1);?>" id="cma_type<?=($idx+1);?>"

        value="1"<? if($_tmp_cma_type == "1") { ?> checked="checked"<? } ?> />

        <img src="/img/<?=$arr[$idx];?>" alt="">

    </label>

<? } ?>

 

 

예제

1

2

3

4

5

6

7

8

9

10

11

12

13

<?

$arr = array(

    "misu"=>"미수금",

    "cancel_price"=>"반품,품절",

    "refund_price"=>"환불",

    "receipt_point"=>"포인트주문",

    "coupon"=>"쿠폰",

    "escrow"=>"에스크로",

);

?>

<?  foreach($arr AS $key=>$val) : ?>

    <label for="<?=$key;?>"><input type="checkbox" name="<?=$_key; ?>" value="Y" id="<?=$key;?>"<? if(${$_key} == "Y") : ?> checked="checked"<? endif; ?> /><?=$_val ;?></label>

<? endforeach; ?>

 

출처 : http://chongmoa.com/php/13412

반응형
Comments