我现在有一段看起来像这样的代码:
foreach ($array['subarray'] as $current) {
if ($some_variable === 'some_string') {
$new_array[] = $current['some_name'];
} else {
$new_array[] = $current['another_name'];
}
}
同样的代码也可以这样写:
if ($some_variable === 'some_string') {
foreach ($array['subarray'] as $current) {
$new_array[] = $current['some_name'];
}
} else {
foreach ($array['subarray'] as $current) {
$new_array[] = $current['another_name'];
}
}
我的问题是;两者之间是否存在真正的差异,还是只是偏好?我在这里主要谈论性能,但是如果在PHP中通常如何进行嵌套有一些标准。
答案 0 :(得分:4)
考虑到这些特定的例子,第二个例子在性能上更好(如果条件只使用一次),但这种方法会更好:
$new_key = 'default_value';
if ($some_variable === 'some_string') {
$new_key = 'special_value';
}
foreach ($array['subarray'] as $current) {
$new_array[] = $current[$new_key];
}
修改强>
如果差异不仅仅是关键名称,那么我会根据foreach
中的代码的复杂性和相似性做出选择,首先考虑DRY原则和代码可读性以及微观优化(通常不值得)持续。因此,它在很大程度上取决于您在这些循环中所做的事情,您的系统有多重要以及您的数据结构有多大。