我现在有一段代码看起来像这样:
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 中通常如何完成嵌套。
考虑到这些特定示例,第二个示例的性能更好(如果条件只使用一次),但这种方法会更好:
$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 原则和代码可读性,最后考虑微优化(通常不值得)。因此,这在很大程度上取决于您在这些循环中做什么,您的系统有多重要以及您的数据结构有多大。