Intereting Posts
Кнопка WooCommerce Plus / Minus в корзине показывает с перерывами PHP – Тип содержимого, не заданный приложением / x-www-form-urlencoded Как сделать выравнивание на консоли в php Есть ли какой-либо возможный способ найти название страны, использующей IP-адрес с языком сценариев PHP? Laravel 5 UnexpectedValueException в ответ на запрос из-за использования данных POINT Вывести свойство с PHP5 и цепочкой методов URL-адреса CodeIgnitor Файл не найден на Linux Apache2 PHP Dynamic включает в себя текущий путь к файлу Добавить пользовательское скрытое поле в форме PayPal и получить его на перенаправленной странице PHP-переменные заканчиваются NULL (но работает код)! несколько баз данных, рассматривающих проблемы с одним кодом php codebase? PHP добавляет 45 минут к времени с помощью Loop Извлеките параметры $ _GET / $ _ POST и передайте их конструктору получение пустых результатов массива с использованием preg_match_all для значений, которые не соответствуют Найти, если последние два символа в имени файла – это числа

Можно ли отключить переменную сеанса с определенным и переменным индексом?

Предположим, у меня есть эта специфическая переменная сеанса, $_SESSION['cart_'.$itemid] .

Можно ли отсортировать всю переменную сеанса и найти один раз с индексом 'cart_'.$itemid и 'cart_'.$itemid их?

 $matches = preg_grep('/^cart_/', array_keys($_SESSION)); foreach ($matches as $match) { unset($_SESSION[$match]); } с $matches = preg_grep('/^cart_/', array_keys($_SESSION)); foreach ($matches as $match) { unset($_SESSION[$match]); } 

Конечно. Вы могли бы сделать что-то вроде

 foreach ($_SESSION as $key=>$val) { // Look for "cart_" at the front of the array key if (strpos($key, "cart_") === 0) { unset($_SESSION[$key]); } } с foreach ($_SESSION as $key=>$val) { // Look for "cart_" at the front of the array key if (strpos($key, "cart_") === 0) { unset($_SESSION[$key]); } } 

Или то же самое, используя array_keys() :

 foreach (array_keys($_SESSION) as $key) { // Look for "cart_" at the front of the array key if (strpos($key, "cart_") === 0) { unset($_SESSION[$key]); } } с foreach (array_keys($_SESSION) as $key) { // Look for "cart_" at the front of the array key if (strpos($key, "cart_") === 0) { unset($_SESSION[$key]); } } 

добавление

Однако, если я могу сделать дизайнерское предложение, если у вас есть возможность изменить эту структуру, я бы вместо этого рекомендовал хранить эти элементы корзины в виде массива. Затем массив сохраняет значения идентификаторов элементов внутри.

 // Updated after comments.... $_SESSION['cart'] = array(); // Add to cart like this: $_SESSION['cart'][$itemId] = $new_quantity; 

Это упростит работу:

 foreach ($_SESSION['cart'] as $item=>$quantity) { // process the cart } 

В $ SESSION ['cart ' будет храниться только один элемент. $ itemId], если вы не меняете содержимое $ itemId.

В любом случае, вы можете отменить это:

 if (isset($_SESSION['cart_' . $itemId])) { // don't need this if you are iterating through $_SESSION unset($_SESSION['cart_' . $itemId]); }