Как удалить одну строку из массива в сеансе - PullRequest
0 голосов
/ 29 октября 2018

Привет, я пытаюсь удалить одну строку из моего массива.

Например:

array:1 [▼
    5 => "2"
    4 => "1"
]

Ключом является идентификатор, а значением является сумма

Как мне удалить только одну строку в моем представлении, не удаляя весь массив?

Надеюсь, кто-нибудь может мне помочь!

Это мой контроллер корзины:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;

use App\Category;
use App\Product;

class ShopController extends Controller
{

    public function addToShoppingCart(Request $request)
    {
        $data = $this->validate($request, [
            'id' => 'required|integer|min:1|max:2147483647',
            'amount' => 'required|integer|min:1|max:100',
        ]);

        $currentCart = $request->session()->get('cart');

        if (!is_array($currentCart)) {
            $currentCart = [];
        }

        if (array_key_exists($data['id'], $currentCart)){
            $currentCart[$data['id']]+= $data['amount'];
        }else{
            $currentCart[$data['id']] = $data['amount'];
        }

        $request->session()->put('cart', $currentCart);
        return Redirect()->action('ShopController@cart');
    }

    public function cart(Request $request)
    {
        $cart = $request->session()->get('cart');
        return view('shop/cart', [
            'cart' => (is_array($cart) ? $cart:[]),
        ]);
    }

    public function delete()
    {
        unset($_SESSION['cart']['id']);
        return Redirect()->back();
    }
}

Это моя корзина:

@extends('layouts.app')

@section('content')
    @forelse ($cart as $id => $amount)
        <div class="container">
            <li>Product: {{$id}}, Hoeveelheid: {{$amount}}</li>
            <a class="btn btn-danger" href="{{ action('ShopController@delete') }}">
                Product verwijderen
            </a>
            <a href="{{ action('ShopController@clear') }}">Winkelwagen legen</a>
        </div>

        {{ dd($cart) }}
        @empty

        <div class="container">
            Er is nog niks in uw winkelwagen!
        </div>
    @endforelse
@endsection

Я надеюсь, что кто-то может вытащить меня из беды

1 Ответ

0 голосов
/ 29 октября 2018

Как указал Джон Стерлинг, вы должны использовать unset примерно так:

unset($array[1]); // unsets element of $array with key of 1

Пример:

$array = array(
    5 => "2",
    4 => "1"
);

unset($array[5]);

/**
Will output:
    Array
    (
        [4] => 1
    )
*/
print_r($array);

unset($array);

print_r($array); // Produces PHP Notice:  Undefined variable: array in test.php on line 13
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...