我有一个php SESSION
数组如下:
[image] => Array
(
[1] => 1475141244.jpg
[2] => 1475141245.jpg
[3] => 1475141245_1.jpg
[4] => 1475141246.jpg
)
根据给定的键,我想从这个数组中取消键/值的设置。
我试过这样做:
if (!empty($_POST['key'])){
$delkey = $_POST['key'];
foreach ($_SESSION['image'] as $k => $v) {
if ($delkey == $v) {
$imgkey = array_search($v, $_SESSION['image']);
if($imgkey) unset($_SESSION['image'][$imgkey]);
}
}
}
但是我的问题是我不能从这个数组中取消设置第一项。对于其他钥匙,这对我来说不是问题。
谁能告诉我这是什么原因?这里有一个简单的解决方案来解除$_SESSION
-使用in_array()
函数来检查所需值是否在$_SESSION
中。
if(!empty($_POST['key'])){
$delkey = $_POST['key'];
if(in_array($delkey, $_SESSION['image'])){
$imgkey = array_search($delkey, $_SESSION['image']);
unset($_SESSION['image'][$imgkey ]);
}
}
下面是一个使用数组创建post值的工作示例。
我想这会对你有帮助。让我知道它是好还是不好??array_shift()将数组的第一个值移开并返回,将数组缩短一个元素并向下移动所有元素。所有数值数组键将被修改为从0开始计数,而文字键将不会被触摸。
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
输出:Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
请尝试一下。
if (!empty($_POST['key'])){
session_start();
$delkey = $_POST['key'];
foreach ($_SESSION['image'] as $k => $v) {
if ($delkey == $v) {
$imgkey = array_search($v, $_SESSION['image']);
if($imgkey) {
unset($_SESSION['image'][$imgkey]);
}
}
}
}
您可以尝试array_shift()
,例如:array_shift($_SESSION['image']);
我试了下面的代码,它工作了。
<?php
session_start();
$_SESSION['image'] = array(
1 => '1475141244.jpg',
2 => '1475141245.jpg',
3 => '1475141245_1.jpg',
4 => '1475141246.jpg',
);
array_shift($_SESSION['image']);
var_dump($_SESSION);