【发布时间】:2020-10-26 05:50:22
【问题描述】:
我正在尝试构建数组路径以减少代码。原因是大约有 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
【问题讨论】:
-
如果不使用
eval(),我认为"$arrayWithPrettyLongName['level_1']"并不容易做到,不过stackoverflow.com/questions/1677099/… 中的想法可能会有所帮助。 -
如果像您拥有的代码一样,您只想将这些值添加到数组
array_sum($arrayWithPrettyLongName['level_1'])中的特定级别中也应该可以工作。