Laravel合并多单元素数组并在Blade视图遍历显示问题
Laravel合并多数组并在Blade视图遍历展示
问题分析
你当前代码在循环中每次都会重新创建仅含单个用户名称的数组赋值给$result,导致最终传递到视图的$result只保留最后一次循环的结果,无法展示所有用户名称。需要先初始化空数组,在循环中逐个添加用户名称,最后合并去重。
修改后的Controller代码
public function index() { $id = Auth::id(); $login_ok = DB::table('users')->where('id',$id)->first(); $id_tray = $login_ok->id_tray; $consumer_key = env('consumer_key'); $consumer_secret = env('consumer_secret'); $code = env('code'); $api_address = env('api_address'); $acesso = Http::post($api_address.'/auth', [ 'consumer_key' => $consumer_key, 'consumer_secret' => $consumer_secret, 'code' => $code ]); $token = $acesso["access_token"]; $response = Http::get($api_address.'/orders', [ 'access_token' => $token, 'partner_id' => $id_tray, ]); $pedidos = $response["Orders"]; // 初始化空数组存储所有用户名称 $result = []; foreach ($pedidos as $pedido) { $id_pedidos = $pedido['Order']['customer_id']; $cliente = Http::get($api_address.'/customers/'.$id_pedidos, [ 'access_token' => $token, ':id' => $id_pedidos, ]); $usuario = $cliente['Customer']['name']; // 将用户名称追加到数组 $result[] = $usuario; } // 去重并重新索引数组(若需要从1开始索引可手动调整,默认0开始不影响展示) $result = array_values(array_unique($result)); return view('pages.minhas-vendas',compact('id','pedidos','result')); }
修改后的Blade视图代码
避免循环变量与数组变量重名,防止覆盖:
@foreach ($result as $name) <td>{{ $name }}</td> @endforeach
关键说明
- 先初始化
$result为空数组,而非循环内每次创建新数组; - 用
$result[] = $usuario将每个用户名称追加到数组末尾; array_unique()去除重复名称,array_values()重新索引数组;- 视图循环变量改用
$name,避免与数组变量$result冲突。
内容的提问来源于stack exchange,提问作者Jhow Costa
相关产品推荐
相关产品推荐

