构建数组路径

我正在尝试构建数组路径以减少代码。原因是有大约 50 条长路径,我想减少代码库。对于“test-2”,变量“$path”可以被硬编码,同时右侧“key-X”应该能够调整,例如用于以后的 for 循环。


问题:


是否可以构建“test-2”中描述的数组路径?


想要的结果:


测试 1:60


测试 2:60


<?php


$arrayWithPrettyLongName = [

  'level_1' => [

    'key_1' => 10,

    'key_2' => 20,

    'key_3' => 30,

  ]

];


// Test-1 // Works fine!


$result_1 =

$arrayWithPrettyLongName['level_1']['key_1'] +

$arrayWithPrettyLongName['level_1']['key_2'] +

$arrayWithPrettyLongName['level_1']['key_3'] ;


echo $result_1;


// Test-2 // Throws errors.


$path = "$arrayWithPrettyLongName['level_1']";


$result_2 =

$path . ['key_1'] +

$path . ['key_2'] +

$path . ['key_3'] ;


echo $result_2;

错误


PHP Parse error:  syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in Xxx.php on line 18


子衿沉夜
浏览 250回答 2
2回答

吃鸡游戏

我认为您真正想知道的是如何创建数组引用。您可以通过在数组名称前添加 & 符号来实现此目的<?php$arrayWithPrettyLongName = [&nbsp; 'level_1' => [&nbsp; &nbsp; 'key_1' => 10,&nbsp; &nbsp; 'key_2' => 20,&nbsp; &nbsp; 'key_3' => 30,&nbsp; ]];// Test-1 // Works fine!$result_1 =$arrayWithPrettyLongName['level_1']['key_1'] +$arrayWithPrettyLongName['level_1']['key_2'] +$arrayWithPrettyLongName['level_1']['key_3'] ;echo $result_1;echo "\n";//Just create an array reference here, by preceding the name with an `&`$path = &$arrayWithPrettyLongName['level_1'];//Also remove the `.` symbol here. That's not the correct syntax$result_2 =$path['key_1'] +$path['key_2'] +$path['key_3'] ;echo $result_2;但看!如果你真的想减少代码,难道就不能这样做吗?$result_3 = 0;foreach ($arrayWithPrettyLongName['level_1'] as $value){&nbsp; &nbsp; $result_3 += $value;}echo $result_3;如果以后数组变大,保存就会很麻烦。

一只斗牛犬

像这里一样工作:&nbsp; &nbsp; <?php$arrayWithPrettyLongName = [&nbsp; 'level_1' => [&nbsp; &nbsp; 'key_1' => 10,&nbsp; &nbsp; 'key_2' => 20,&nbsp; &nbsp; 'key_3' => 30,&nbsp; ]];// Test-1$result_1 =$arrayWithPrettyLongName['level_1']['key_1'] +$arrayWithPrettyLongName['level_1']['key_2'] +$arrayWithPrettyLongName['level_1']['key_3'] ;echo $result_1; //output 60// Test-2$path = $arrayWithPrettyLongName['level_1'];$result_2 =$path['key_1'] +$path['key_2'] +$path['key_3'] ;echo $result_2; //output 60?>你错了$path = "$arrayWithPrettyLongName['level_1']";必须是没有""另一个改变是$path .必须是$path['key_1'];
打开App,查看更多内容
随时随地看视频慕课网APP