PHP에서 함수가 반환 한 액세스 배열
PHPPHP에서 함수가 반환 한 액세스 배열
나는 그것을 원한 나의 위치에 부호를 삽입하는 템플렛 엔진을 사용하고있다.
나는 아주 쉬운 것을 테스트하기위한 함수를 작성했다.
myfunction() { return '($this->data["a"]["b"] ? true : false)'; }
문제는 $ this-> 데이터가 비공개이며 어디에서나 액세스 할 수 없으므로 getData ()를 사용해야합니다. 내 문제를 일으킨다.
$this->getData()['a']['b']
작동하지 않으며 값을 먼저 할당하는 것은 if () 블록에서 직접 사용되기 때문이 아닙니다.
어떤 아이디어?
해결법
-
==============================
1.PHP 5.4부터 정확히 할 수 있습니다 :
PHP 5.4부터 정확히 할 수 있습니다 :
getSomeArray()[2]
참조 : https://secure.php.net/manual/en/language.types.array.php#example-62
PHP 5.3 이전 버전에서는 임시 변수를 사용해야합니다.
-
==============================
2.다음과 같은 것을 사용할 수 없습니다 :
다음과 같은 것을 사용할 수 없습니다 :
$this->getData()['a']['b']
즉, 배열 호출 구문은 함수 호출에서 직접 가능하지 않습니다.
다음과 같이 임시 변수를 사용해야합니다.
$tmp = $this->getData(); $tmp['a']['b'] // use $tmp, now
귀하의 경우, 이것은 아마도 다음과 같은 것을 사용한다는 것을 의미합니다 :
function myfunction() { $tmp = $this->getData(); return ($tmp['a']['b'] ? true : false); }
당신은해야한다 :
너는 그것에 대해 많은 선택권이 없다. 사실 ...
-
==============================
3.Ok ... 명백하게 정말로 더 좋은 길은 없다. 그래서 나는 그렇게 아름다운 해결책으로 나 자신에게 대답 할 것이다 :
Ok ... 명백하게 정말로 더 좋은 길은 없다. 그래서 나는 그렇게 아름다운 해결책으로 나 자신에게 대답 할 것이다 :
함수를 만들었습니다.
arrayGet($array, $index) { return $array[$index]; }
그리고 이것을 다음과 같이 사용했습니다 :
myfunction() { return '(arrayGet(arrayGet($this, "a"), "b") ? true : false)' }
이것은 꽤 아니지만 작동합니다.
-
==============================
4.$ this-> 데이터는 보호되어있는 경우 항상 액세스 할 수 있습니다. $ object-> data는 모든 곳에서 액세스 할 수 없으므로 $ this를 코드에 반환하면 평가되어야합니다.
$ this-> 데이터는 보호되어있는 경우 항상 액세스 할 수 있습니다. $ object-> data는 모든 곳에서 액세스 할 수 없으므로 $ this를 코드에 반환하면 평가되어야합니다.
Btw, 코드에 버그가 있습니다. 따옴표를 이스케이프 처리해야합니다.
myfunction() { return '($this->data[\'a\'][\'b\'] ? true : false)'; }
-
==============================
5.PHP 버전 5.4부터 가능합니다.
PHP 버전 5.4부터 가능합니다.
임시 변수를 원하지 않고 PHP 버전이 5.4보다 적다면 첫 번째 또는 마지막 요소를 가져 오는 몇 가지 내장 함수를 사용할 수 있습니다.
$x = 'first?last'; $first = array_shift(explode('?', $x)); $last = end(explode('?', $x)); $last2 = array_pop(explode('?', $x));
편집하다: !!! 최신 버전 (5.4 이상)에서는 PHP가 변수를 변수로 기대하기 때문에주의해야합니다.
from https://stackoverflow.com/questions/1459377/access-array-returned-by-a-function-in-php by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP로 계산기를 만드는 방법? (0) | 2018.09.10 |
---|---|
UTF-8 문자열을 사용하여 PHP에서 파일 시스템 함수를 사용하려면 어떻게해야합니까? (0) | 2018.09.10 |
LIKE 문을 사용하여 PDO 매개 변수가있는 쿼리를 만드는 방법은 무엇입니까? (0) | 2018.09.10 |
반복 날짜를 기억하는 방법 일광 절약 시간제 (0) | 2018.09.10 |
자바 스크립트 함수에 PHP 배열 전달 [duplicate] (0) | 2018.09.10 |