【发布时间】:2017-11-29 11:52:47
【问题描述】:
我想知道是否可以改进。
我有一个包含键和值的数组。
我想将这些键和值传递到一个函数中,每行作为单独的实体。
数组示例:
[basket][products] { [10] => 3 [12] => 5 [15] => 1 }
我目前使用:
foreach($data['basket']['products'] as $product => $quantity) {
$basketClass->addItem($product,$quantity);
}
unset($product,$quantity);
这是 4 行。
我不想更改数组中的值,我只想将它们全部逐行应用于->addItem 函数。
是否有更短、更简洁或“更干净”的方式来执行此操作,特别强调新的 PHP7 功能?
【问题讨论】:
-
短于 3 行? :D
-
*四行。 Foreach 留下应该整理的剩余值。
-
3行,因为
{}可以去掉(-; -
我的评论有点争议 ;) 但恕我直言,这是个人意见问题 - 看看@this reddit thread reddit.com/r/PHP/comments/1uuc34/… - 如果性能方面的这个小差异不关心你,你可以试试
array_walkof course - 正如答案中已经提到的那样 -
不是更少的代码(实际上更多),但你可以重组它吗?
$basketClass->addItemsFromArray($data['basket']['products'])然后在那里执行 loop/array_walk (取消设置是不必要的,因为它已本地化到该函数的范围内)。产生额外的代码,但会将这部分减少为单行¯_(ツ)_/¯。对我来说似乎是微优化,但你必须有理由想让它更整洁,所以我只想说将处理移到其他地方。