我正在使用这样的代码:
$a = [];
$a['a'] = 1;
$text1 = [];
foreach ($b as $item)
{
$text1[] = $item['1'];
}
$a['text1'] = implode(',', $text1);
$text2 = [];
foreach ($b as $item)
{
$text2[] = $item['2'];
}
$a['text2'] = implode(',', $text2);
我的同事这样重写:
$a = [];
$a['a'] = 1;
$a['text1'] = call_user_func(function() use ($b) {
$text1 = [];
foreach ($b as $item)
{
$text1[] = $item['1'];
}
return implode(',', $text1);
}();
$a['text2'] = call_user_func(function() use ($b) {
$text2 = [];
foreach ($b as $item)
{
$text2[] = $item['2'];
}
return implode(',', $text2);
}();
他的理由:它增加了封装,在我的第一个例子中,将会有“漫步”变量($text1
,$text2
),除非我取消它们。
答案 0 :(得分:2)
是的,我同意你的同事 - 使用闭包来封装代码是有意义的。
然而,你在那里的所有东西都可以简化为:
<?php
$a = [
'a' => 1,
'text1' => implode(',', array_column($b, '1')),
'text2' => implode(',', array_column($b, '2')),
];
供参考,见: