在PHP中取消数组的第一个元素


Unset first element from an array in PHP

我有一个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);