Я вообще думаю, что foreach довольно хорошо читается и обычно довольно быстр.Если вы хотите, чтобы это было в одной строке, вы также можете сделать с foreach:
$nl = array(); foreach($list as $k=>$v) $nl[$k]=$v; $list = $nl; unset($nl);
Что в основном демонстрирует, что нет смысла получать что-то «в одну строку».вы предпочитаете обратные вызовы по какой-то причине, о которой я не знаю:
$list = array_reduce($list, function($v,$w) {return $v+array($w[0]=>$w[1]);}, array());
Что также демонстрирует это.Это вряд ли будет быстрее, чем foreach, в любом случае разница в скорости, безусловно, не имеет значения в вашем случае.