PHPにおける配列要素の動的パスの問題
世界只因有你
世界只因有你 2017-05-16 13:09:31
0
6
516

配列内の要素のパスがわかっている場合、この要素の値を取得するにはどうすればよいですか?
次のコードはエラーを報告します。それを解決するにはどうすればよいですか?誰か良いアイデアはありますか?

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

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

エコー $$y 

エラーが報告されます:

注意: 未定義の変数: m['a']['b']['c'] (/web/root/index.php の 9 行目)
世界只因有你
世界只因有你

全員に返信(6)
曾经蜡笔没有小新

動的変数名は変数に対してのみ有効で、配列要素には無効です。 'm["a"]["b"]["c"]'先頭に$を付けても文字列全体が変数とみなされ、当然見つかりません。

ループを使用するだけです

リーリー
いいねを押す +0
我想大声告诉你

?まず第一に、出力したエコーの後の変数 $y にはもう 1 つあります $符号,其次如果你想获取@@@@@,直接$m['a']['b']['c']

いいねを押す +0
迷茫

実際、あなたが書いたことは正しいです。急いで質問しないで、コードを見てください

いいねを押す +0
巴扎黑

個人的には、この種の問題に直面した場合、文字列置換を使用する代わりに再帰を使用して対処することを検討する必要があると思います。

リーリー
いいねを押す +0
伊谢尔伦

リーリー

いいねを押す +0
滿天的星座

laravelフレームワークを使用している場合は、

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート