为了账号安全,请及时绑定邮箱和手机立即绑定

构建数组路径

构建数组路径

PHP
子衿沉夜 2023-07-15 17:21:00
我正在尝试构建数组路径以减少代码。原因是有大约 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
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

我认为您真正想知道的是如何创建数组引用。您可以通过在数组名称前添加 & 符号来实现此目的


<?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;

如果以后数组变大,保存就会很麻烦。


查看完整回答
反对 回复 2023-07-15
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

像这里一样工作:


    <?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']";必须是没有""

另一个改变是$path .必须是$path['key_1'];


查看完整回答
反对 回复 2023-07-15
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号