#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 в последнем для обоих массивов.