> 백엔드 개발 > PHP 튜토리얼 > 请问php如何快速的根据字符串进行数组访问.

请问php如何快速的根据字符串进行数组访问.

WBOY
풀어 주다: 2016-06-06 20:14:35
원래의
1207명이 탐색했습니다.

如:

<code>$array=>[
'a'=>[
    'b'=>[
        'name'=>'张三'
    ]
]
];</code>
로그인 후 복사
로그인 후 복사

请问如何实现下方的访问方式.

<code>$arrayNode = ['a','b','name'];
//请问如何根据 $arrayNode 变量来实现
$array{$arrayNode}='李四';//这样php会报错.
// $array['a']['b']['name']='李四';  类似这样的效果呢? 
print($array{$arrayNode});
//李四

</code>
로그인 후 복사
로그인 후 복사

谢谢.

回复内容:

如:

<code>$array=>[
'a'=>[
    'b'=>[
        'name'=>'张三'
    ]
]
];</code>
로그인 후 복사
로그인 후 복사

请问如何实现下方的访问方式.

<code>$arrayNode = ['a','b','name'];
//请问如何根据 $arrayNode 变量来实现
$array{$arrayNode}='李四';//这样php会报错.
// $array['a']['b']['name']='李四';  类似这样的效果呢? 
print($array{$arrayNode});
//李四

</code>
로그인 후 복사
로그인 후 복사

谢谢.

<code>$arrayNode = ['a','b','name'];
$array=[
    'a'=>[
        'b'=>[
            'name'=>'张三'
        ]
    ]
];
echo $array[array_shift($arrayNode)][array_shift($arrayNode)][array_shift($arrayNode)];</code>
로그인 후 복사

你想要的可能是

<code>$arrayNode = ['a','b','name'];

$array[array_shift($arrayNode)][array_shift($arrayNode)][array_shift($arrayNode)] = "李四";</code>
로그인 후 복사

是这样吗?

修改答案

<code><?php $arrayNode = ['a','b','name',"1234"];
$arr = [];
$name = "李四";
while ($arrayNode) {
    if(count($arr)==0){
        $arr[array_pop($arrayNode)] = $name;
    }else{
        $arr[array_pop($arrayNode)] = $arr;
        array_shift($arr);
    }
    
}
var_dump($arr);</code></code>
로그인 후 복사

<code>$pointer = &$array;
$found = true;
foreach ($arrayNode as $key) {
    if (isset($pointer[$key])) {
        $pointer = &$pointer[$key];
    } else {
        $found = false;
        break;
    }
}

if ($found) {
    $pointer = '李四';
}
</code>
로그인 후 복사

长是长了点,不过适应性应该还可以。

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿