>백엔드 개발 >PHP 튜토리얼 >eval() 없이 문자열 경로 표현식을 사용하여 중첩 배열 값에 액세스하는 방법은 무엇입니까?

eval() 없이 문자열 경로 표현식을 사용하여 중첩 배열 값에 액세스하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 03:00:03429검색

How to Access Nested Array Values Using String Path Expressions Without eval()?

문자열 경로 표현식을 사용하여 배열 값 검색

프로그래밍에서는 유연한 경로를 사용하여 중첩된 배열 값에 액세스해야 하는 경우가 많습니다. 다음과 같은 배열 구조를 생각해 보세요.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.