从PHP中的数组中取消设置第一个元素

时间:2016-09-29 09:35:07

标签: php arrays session

我有一个如下所示的php OnClickListener数组:

SESSION

根据给定的键,我想从此数组中取消设置键/值。

我试过这样的事情:

[image] => Array
        (
            [1] => 1475141244.jpg
            [2] => 1475141245.jpg
            [3] => 1475141245_1.jpg
            [4] => 1475141246.jpg
        )

但我的问题是我无法取消此数组中的第一项。对于其他键,对我来说不是问题。

有谁可以告诉我这是什么原因?

4 个答案:

答案 0 :(得分:1)

以下是取消设置$_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 ]);    
    }
}

以下是带有数组并创建帖子值的working example

我认为这会对你有所帮助。让我知道是不是这样?

答案 1 :(得分:0)

您可以尝试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);

答案 2 :(得分:0)

array_shift()关闭数组的第一个值并返回它,将数组缩短一个元素并将所有内容向下移动。将修改所有数值数组键以从零开始计数,而不会触及文字键。

$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);

输出:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

答案 3 :(得分:0)

请试试这个。

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]);
        }
    }    
  }
}