php中数组的某一个元素的动态路径问题
世界只因有你
世界只因有你 2017-05-16 13:09:31
0
6
478

假如我知道数组中某一个元素的路径,我怎么取到这个元素的值?
下面这段代码报错,该怎么解决?大家有没有好的办法?

$m  = ['a'=>['b'=>['c'=>'@@@@@']]];

$x = 'a.b.c';
$y = str_replace('.','\'][\'',$x);
$y = 'm[\''.$y.'\']';

echo $$y; 

会报错:

Notice: Undefined variable: m['a']['b']['c'] in /web/root/index.php on line 9
世界只因有你
世界只因有你

membalas semua(6)
曾经蜡笔没有小新

Nama pembolehubah dinamik hanya sah untuk pembolehubah, bukan elemen tatasusunan 'm["a"]["b"]["c"]'Walaupun $ ditambahkan di hadapan, keseluruhan rentetan akan dianggap sebagai pembolehubah, dan secara semula jadi ia tidak boleh ditemui.

Anda boleh menggunakan gelung

$m  = ['a'=>['b'=>['c'=>'@@@@@']]];

$x = 'a.b.c';
$y = explode('.',$x);
$z = $m;
foreach ($y as $key => $value) {
    $z = $z[$value];
}

var_dump($z); 
我想大声告诉你

?Pertama sekali, pembolehubah $y selepas gema yang anda cetak mempunyai satu lagi $符号,其次如果你想获取@@@@@,直接$m['a']['b']['c']

迷茫

Sebenarnya, apa yang anda tulis adalah betul, jangan tergesa-gesa untuk bertanya, lihat sahaja kod anda

巴扎黑

Secara peribadi, saya berpendapat bahawa apabila menghadapi masalah seperti ini, kita harus mempertimbangkan untuk menggunakan rekursi untuk menanganinya dan bukannya menggunakan penggantian rentetan.

<?php

$data = [
    'a'=>[
        'b'=>[
            'c'=>'@@@@@'
            ]
        ]
    ];

$path = 'a.b.c';

$arr = explode('.',$path);

function test($arr, $data){
    if(array_key_exists($arr[0],$data)){
        if(count($arr) > 1){
            $key = array_shift($arr);
            return test($arr, $data[$key]);
        }else{
            return $data[$arr[0]];
        }
    }else{
        return null;
    }
}

var_dump(test($arr,$data));
伊谢尔伦
$m  = ['a'=>['b'=>['c'=>'@@@@@']]];
$x = 'a.b.c';

echo array_reduce(explode('.', $x), function($s, $i) { return $s[$i]; }, $m);
滿天的星座

Jika anda menggunakan rangka kerja laravel,

$m = [ 'a'=>['b'=>['c'=>'@@@@@' ]]];
$x = 'a.b.c';
$z = array_get($m,$x);
return $z;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!