배열을 상수로 선언 할 수 있습니까?
이 질문에 이미 답변이 있습니다.
- 배열을 포함하는 PHP 상수? 21 답변
다음과 같은 상수를 정의 할 수 있습니다.
define("aconstant','avalue');
아래와 같은 방식으로 배열을 정의 할 수 없습니까?
define("months",array("January", "February", ---);
업데이트 : 이것은 PHP 7에서 가능합니다 ( 참조 )
// Works as of PHP 7
define('ANIMALS', array(
'dog',
'cat',
'bird'
));
echo ANIMALS[1]; // outputs "cat"
원래 답변
php.net에서 ...
상수의 값. 단지 스칼라와 null 값이 허용됩니다 . 스칼라 값은 정수, 부동 소수점, 문자열 또는 부울 값입니다. 자원 상수를 정의 할 수 있지만 권장되지 않으며 예상치 못한 동작을 유발할 수 있습니다.
$months = array("January,"February",...)
괜찮을 것입니다.
PHP 5.6부터 ( nikic을 통해 ) 해당 목적으로 const 를 사용할 수 있습니다 .
const months = ["January", "February"];
var_dump("January" === months[0]);
해킹으로 상수 내부에 배열을 넣을 수 있습니다.
define('MONTHS', serialize(array('January', 'February' ...)));
하지만 unserialize()
필요할 때 일정한 값 을 가져야 하는데이게 그다지 유용하지 않은 것 같습니다.
대안으로 여러 상수를 정의하십시오.
define('MONTH_1', 'January');
define('MONTH_2', 'February');
...
그리고 constant()
함수를 사용 하여 값을 찾습니다.
echo constant('MONTH_'.$month);
아니, 할 수 없습니다. 참조 PHP를 : 구문 - 수동
만 스칼라 데이터 ( 부울, 정수, 부동 소수점 및 문자열 ) 상수에 포함 할 수 있습니다. 상수를 리소스로 정의 할 수 있지만 예기치 않은 결과가 발생할 수 있으므로 피해야합니다.
JSON 형식을 사용하여 배열을 문자열로 유지 한 다음이 문자열을 상수에 할당 할 수 있습니다.
$months = array("January","February","March");
define('MONTHS', json_encode($months));
사용하려는 경우 :
$months = json_decode(MONTHS);
상수가 있어야하는 경우 구분 된 문자열을 사용하고 배열로 분해하는 것은 어떻습니까?
define("MONTHS", "January;February;March");
$months = explode(";",MONTHS);
PHP 5.6 부터 상수 배열을 선언 할 수 있습니다 . 링크 된 문서는 예제를 사용합니다 const ARR = ['a', 'b'];
. 당신은 또한 할 수 있습니다 const ARR = array('a', 'b');
. 그러나 5.6에는 이상한 점이 있습니다.를 사용하여 상수 배열을 선언 할 수 const
있지만 define()
. 이것은 PHP 7.0에서 수정되었습니다 .
참조 URL : https://stackoverflow.com/questions/3803349/is-it-possible-to-declare-an-array-as-constant
'Nice programing' 카테고리의 다른 글
Android 스튜디오 : Gradle 새로 고침 실패-com.android.tools.build:gradle:2.2.0-alpha6을 찾을 수 없음 (0) | 2020.12.27 |
---|---|
UIScrollView에서 페이지 변경 (0) | 2020.12.27 |
com.android.support:appcompat-v7:22 및 com.android.support:recyclerview-v7:21.1.2를 해결하지 못했습니다. (0) | 2020.12.27 |
멀티 바이트 문자 인코딩을위한 ucfirst () 함수 (0) | 2020.12.27 |
link_to : 확인 팝업이 두 번 표시됨 (0) | 2020.12.27 |