构建数组路径
Build array path
我正在尝试构建数组路径以减少代码。原因是有大约 50 条长路径,我想减少代码库。
对于“test-2”,变量“$path”可以被硬编码,同时右侧的“key-X”应该能够被调整,例如用于以后的循环。
问题:
是否可以像“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
像这里一样工作:
<?php
$arrayWithPrettyLongName = [
'level_1' => [
'key_1' => 10,
'key_2' => 20,
'key_3' => 30,
]
];
// 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']";
must be without ""
另外改成with $path .
must be $path['key_1'];
我认为您在这里真正想知道的是如何创建数组引用。您可以通过在数组名称前加上一个符号
来做到这一点
<?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;
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){
$result_3 += $value;
}
echo $result_3;
如果以后数组变大,就省去了很多麻烦。
我正在尝试构建数组路径以减少代码。原因是有大约 50 条长路径,我想减少代码库。 对于“test-2”,变量“$path”可以被硬编码,同时右侧的“key-X”应该能够被调整,例如用于以后的循环。
问题:
是否可以像“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
像这里一样工作:
<?php
$arrayWithPrettyLongName = [
'level_1' => [
'key_1' => 10,
'key_2' => 20,
'key_3' => 30,
]
];
// 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']";
must be without ""
另外改成with $path .
must be $path['key_1'];
我认为您在这里真正想知道的是如何创建数组引用。您可以通过在数组名称前加上一个符号
来做到这一点<?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;
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){
$result_3 += $value;
}
echo $result_3;
如果以后数组变大,就省去了很多麻烦。