Jika saya tahu laluan elemen dalam tatasusunan, bagaimanakah saya boleh mendapatkan nilai elemen ini?
Kod berikut melaporkan ralat, bagaimana untuk menyelesaikannya? Adakah sesiapa mempunyai idea yang baik?
$m = ['a'=>['b'=>['c'=>'@@@@@']]];
$x = 'a.b.c';
$y = str_replace('.','\'][\'',$x);
$y = 'm[\''.$y.'\']';
echo $$y;
Ralat akan dilaporkan:
Notis: Pembolehubah tidak ditentukan: m['a']['b']['c'] dalam /web/root/index.php pada baris 9
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
?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.
Jika anda menggunakan rangka kerja laravel,