프로그래밍에서는 유연한 경로를 사용하여 중첩된 배열 값에 액세스해야 하는 경우가 많습니다. 다음과 같은 배열 구조를 생각해 보세요.
Array ( [0] => Array ( [Data] => Array ( [id] => 1 [title] => Manager [name] => John Smith ) ) [1] => Array ( [Data] => Array ( [id] => 1 [title] => Clerk [name] => ( [first] => Jane [last] => Smith ) ) ) )
이 작업은 문자열을 배열 인덱스 경로를 나타내는 입력으로 사용하고 해당 값을 반환하는 함수를 작성하는 것입니다. 이렇게 하면 잠재적으로 위험한 eval() 함수의 사용을 피할 수 있습니다.
해결책
이 문제를 해결하는 열쇠는 인덱스 경로 문자열을 개별 배열 키로 분해하는 것입니다. 이는Explode() 함수를 사용하여 달성할 수 있습니다.
<code class="php">$pathStr = "0:Data:name"; $paths = explode(":", $pathStr); </code>
추출된 키를 사용하여 루프를 사용하여 배열을 반복적으로 탐색할 수 있습니다.
<code class="php">$itens = $myArray; foreach($paths as $ndx){ $itens = $itens[$ndx]; }</code>
이 예에서는 $itens 이제 "John Smith" 값이 포함됩니다.
따라서 이 작업을 수행하는 함수는 다음과 같습니다.
<code class="php">function getArrayValueByPath($pathStr, $arrayToAccess) { $paths = explode(":", $pathStr); $itens = $arrayToAccess; foreach($paths as $ndx){ $itens = $itens[$ndx]; } return $itens; }</code>
위 내용은 eval() 없이 문자열 경로 표현식을 사용하여 중첩 배열 값에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!