Проблема с массивом в laravel

#php #arrays

Вопрос:

Я использую массив для отображения в своем проекте, но он работает неправильно из-за 1 в конце, его нет на выходе контроллера, но он есть на выходе блейда. Пожалуйста, кто-нибудь может ответить на мой вопрос, почему 1 находится в последней части массива.

Вот массив контроллера/PHP

 $session = new Session(); $cam = Compare::where('session_id',$session-gt;get('shop_session'))-gt;get('product_id'); $pd_id = []; $pdt1 = []; $pdt = []; $pd_desc = [];  foreach($cam as $ca) {  $pd_id[] = $ca-gt;product_id; }  foreach($pd_id as $pid) {  $pdt_query = Product::where('id',$pid);  $pdt1['image'] = $pdt_query-gt;pluck('product_thumbnail')[0];  $pdt1['name'] = $pdt_query-gt;pluck('product_name_en')[0];  $pdt1['currency'] = $pdt_query-gt;pluck('currency')[0];  $pdt1['selling_price'] = $pdt_query-gt;pluck('selling_price')[0];  $pdt1['discount_price'] = $pdt_query-gt;pluck('general_discount_price')[0];  $pdt1['id'] = $pid;  $pdt[] = $pdt1;   $pd_desc['Description'][] = Product::where('id',$pid)-gt;pluck('long_descp_en')[0];  $pd_desc['Tags'][] = Product::where('id',$pid)-gt;pluck('product_tags_en')[0];  $pd_desc['Ratings amp; Reviews'][] = NULL;  $pd_desc1['size'] = Product::where('id',$pid)-gt;pluck('product_size')[0];  $pd_desc1['color'] = Product::where('id',$pid)-gt;pluck('product_color')[0];  $pd_desc['Variants'][] = $pd_desc1;  $pd_desc['Availability'][] = ((Product::where('id',$pid)-gt;pluck('product_qty')[0])gt;1) ? 'In Stock' : 'Out of Stock';  $pd_desc['Remove'][] = $pid; }  $pty['name'] = NULL; array_push($pdt,$pty); $pd_desc = json_encode($pd_desc); return view('body.compare',compact('pdt','pd_desc'));  

Выход контроллера

 {"Description":["klo","demo"],"Tags":["klo","demo"],"Ratings amp; Reviews": [null,null],"Variants":[{"size":null,"color":null}  {"size":null,"color":null}],"Availability":["In Stock","In Stock"],"Remove":[22,21]}  

Вот вывод файла blade

Первый Массив

 Array (  [0] =gt; Array  (  [image] =gt; `enter code here`img/backend/upload/products/main_img/22_1635763190.jpg  [name] =gt; klo  [currency] =gt; ₹  [selling_price] =gt; 875  [discount_price] =gt; 0  [id] =gt; 22  )   [1] =gt; Array  (  [image] =gt; img/backend/upload/products/main_img/21_1635763121.jpg  [name] =gt; demo  [currency] =gt; ₹  [selling_price] =gt; 875  [discount_price] =gt; 456  [id] =gt; 21  )  [2] =gt; Array  (  [name] =gt;   )  ) 1  

Второй Вывод Массива

 {"Description":["klo","demo"],"Tags":["klo","demo"],"Ratings amp; Reviews":[null,null],"Availability":["In Stock","In Stock"],"Remove":[22,21]}1  

Ответ №1:

Потому что эта строка :

 $pty['name'] = NULL;  

выходит за рамки вашей петли. В вашем примере исходный запрос возвращает два результата :

 $cam = Compare::where('session_id',$session-gt;get('shop_session'))-gt;get('product_id');  

И поэтому цикл выполняется дважды. Однако после завершения цикла у вас есть это :

 $pty['name'] = NULL;  

что добавляет один последний элемент в массив.

Комментарии:

1. 1 отображается даже во втором массиве, где этот $pty[‘имя’] = NULL; отсутствует

2. Я прокомментировал это, но он по-прежнему показывает 1 в последнем для обоих массивов.