从 PHP 中的会话数组中删除某个数字
Removing a certain number out of a session array in PHP
我的所有 'shop items' 旁边都有一个按钮,可以删除其中一件商店商品,但我需要它来删除一件商品,而不是删除整个数字数组,我认为这是当我找到要删除的号码时,可以使用 break 语句,但它会删除所有号码。
if (isset($_GET['remove']) && isset($_SESSION['shopitems'])) {
if (in_array($_GET['remove'], $_SESSION['shopitems'])) {
for ($i = 0; $i < sizeof($_SESSION['shopitems']); $i++) {
if ($_SESSION['shopitems'][$i] == $_GET['remove']) {
$shopArray = $_SESSION['shopitems'];
if(sizeof($shopArray) == 1) {
$_SESSION['shopitems'] = null;
$_SESSION['added'] = null;
} else {
array_splice($shopArray, $i, $i);
$_SESSION['shopitems'] = $shopArray;
}
break;
}
}
}
}
这里我检查 URL 是否包含删除变量并且设置了会话,一旦我这样做了,我检查数组是否包含放在 URL 中的数字,如果是这样我将启动一个 for 循环并检查会话商店项目的关键索引是否等于 URL 变量,如果是这样我想删除它,但是如果我使用 array_splice,突然它们都不见了,这是因为我正在使用的功能吗?还是 break 没有正确执行?
你为什么不试试 array_search() and unset()?更简单,请查看下面的代码并根据您的情况进行调整:
$array = [1, 5, 6, 12];
$wantToRemove = 5;
$key = array_search($wantToRemove, $array);
unset($array[$key]);
var_dump($array);
您可以像这样格式化您的 $_SESSION['shopitems']
:
$_SESSION['shopitems'] = array (
"item_id" => "item_info",
"item2_id" => "item2_info",
...
)
并执行 unset($_SESSION['shopitems'][$_GET['remove']])
.
您的代码可以是:
if (isset($_GET['remove']) && isset($_SESSION['shopitems']))
if (isset($_SESSION['shopitems'][$_GET['remove']]))
unset($_SESSION['shopitems'][$_GET['remove']])
我的所有 'shop items' 旁边都有一个按钮,可以删除其中一件商店商品,但我需要它来删除一件商品,而不是删除整个数字数组,我认为这是当我找到要删除的号码时,可以使用 break 语句,但它会删除所有号码。
if (isset($_GET['remove']) && isset($_SESSION['shopitems'])) {
if (in_array($_GET['remove'], $_SESSION['shopitems'])) {
for ($i = 0; $i < sizeof($_SESSION['shopitems']); $i++) {
if ($_SESSION['shopitems'][$i] == $_GET['remove']) {
$shopArray = $_SESSION['shopitems'];
if(sizeof($shopArray) == 1) {
$_SESSION['shopitems'] = null;
$_SESSION['added'] = null;
} else {
array_splice($shopArray, $i, $i);
$_SESSION['shopitems'] = $shopArray;
}
break;
}
}
}
}
这里我检查 URL 是否包含删除变量并且设置了会话,一旦我这样做了,我检查数组是否包含放在 URL 中的数字,如果是这样我将启动一个 for 循环并检查会话商店项目的关键索引是否等于 URL 变量,如果是这样我想删除它,但是如果我使用 array_splice,突然它们都不见了,这是因为我正在使用的功能吗?还是 break 没有正确执行?
你为什么不试试 array_search() and unset()?更简单,请查看下面的代码并根据您的情况进行调整:
$array = [1, 5, 6, 12];
$wantToRemove = 5;
$key = array_search($wantToRemove, $array);
unset($array[$key]);
var_dump($array);
您可以像这样格式化您的 $_SESSION['shopitems']
:
$_SESSION['shopitems'] = array (
"item_id" => "item_info",
"item2_id" => "item2_info",
...
)
并执行 unset($_SESSION['shopitems'][$_GET['remove']])
.
您的代码可以是:
if (isset($_GET['remove']) && isset($_SESSION['shopitems']))
if (isset($_SESSION['shopitems'][$_GET['remove']]))
unset($_SESSION['shopitems'][$_GET['remove']])