在php中从多维数组中删除相关元素

在php中从多维数组中删除相关元素,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一组图像数据,如下所示: [other-image] => Array ( [img] => Array ( [0] => 1526973657.jpg [1] => 1526973661.jpg [2] => 1526973665.jpg

我有一组图像数据,如下所示:

[other-image] => Array
        (
            [img] => Array
                (
                    [0] => 1526973657.jpg
                    [1] => 1526973661.jpg
                    [2] => 1526973665.jpg
                )

            [path] => Array
                (
                    [0] => ../post-upload/1/
                    [1] => ../post-upload/1/
                    [2] => ../post-upload/1/
                )

            [type] => Array
                (
                    [0] => 1
                    [1] => 1
                    [2] => 1
                )

            [thumb] => Array
                (
                    [0] => thumb_1526973661.jpg
                    [1] => thumb_1526973665.jpg
                    [2] => thumb_1526973668.jpg
                )

        )
现在我想从子数组中删除一个图像及其所有相关数据。(路径、类型、拇指数据)

这就是我在
php
中尝试的方法:

  $delkey = '1526973657.jpg';
  if(in_array($delkey, $_SESSION['other-image']['img'])){
      $imgkey = array_search($delkey, $_SESSION['other-image']['img']);
      if($imgkey) unset($_SESSION['other-image']['img'][$imgkey]);
  }
但问题是我不能从其他数组中删除相关数据。 有人能告诉我怎么做吗?
多谢各位

相关数据是否与img具有相同的密钥? 如果它们是相同的,我认为您只需要添加一些代码来删除其他数据,就像删除img的方式一样

if($imgkey) unset($_SESSION['other-image']['path'][$imgkey]);
if($imgkey) unset($_SESSION['other-image']['type'][$imgkey]);
if($imgkey) unset($_SESSION['other-image']['thumb'][$imgkey]);

相关数据是否与img具有相同的密钥? 如果它们是相同的,我认为您只需要添加一些代码来删除其他数据,就像删除img的方式一样

if($imgkey) unset($_SESSION['other-image']['path'][$imgkey]);
if($imgkey) unset($_SESSION['other-image']['type'][$imgkey]);
if($imgkey) unset($_SESSION['other-image']['thumb'][$imgkey]);

如果img子数组中的键与子数组(路径、类型和拇指)中的同一键(索引)相关,您也可以取消设置这些键

$delkey = '1526973657.jpg';
if(in_array($delkey, $_SESSION['other-image']['img'])){
    $imgkey = array_search($delkey, $_SESSION['other-image']['img']);
    if($imgkey){
        unset($_SESSION['other-image']['img'][$imgkey]);
        unset($_SESSION['other-image']['path'][$imgkey]);
        unset($_SESSION['other-image']['type'][$imgkey]);
        unset($_SESSION['other-image']['thumb'][$imgkey]);
    }
}

如果img子数组中的键与子数组(路径、类型和拇指)中的同一键(索引)相关,您也可以取消设置这些键

$delkey = '1526973657.jpg';
if(in_array($delkey, $_SESSION['other-image']['img'])){
    $imgkey = array_search($delkey, $_SESSION['other-image']['img']);
    if($imgkey){
        unset($_SESSION['other-image']['img'][$imgkey]);
        unset($_SESSION['other-image']['path'][$imgkey]);
        unset($_SESSION['other-image']['type'][$imgkey]);
        unset($_SESSION['other-image']['thumb'][$imgkey]);
    }
}

您应该在
数组_search()
之后使用
!==false
,因为在某些情况下它可能返回第一个索引,即0,因此您的条件将不会执行。关于从其他数组中删除相关数据,您必须取消设置与该键相关的其他数据

if($imgkey!==false){
        unset($_SESSION['other-image']['img'][$imgkey]);
        unset($_SESSION['other-image']['path'][$imgkey]);
        unset($_SESSION['other-image']['type'][$imgkey]);
        unset($_SESSION['other-image']['thumb'][$imgkey]);
    }

您应该在
数组_search()
之后使用
!==false
,因为在某些情况下它可能返回第一个索引,即0,因此您的条件将不会执行。关于从其他数组中删除相关数据,您必须取消设置与该键相关的其他数据

if($imgkey!==false){
        unset($_SESSION['other-image']['img'][$imgkey]);
        unset($_SESSION['other-image']['path'][$imgkey]);
        unset($_SESSION['other-image']['type'][$imgkey]);
        unset($_SESSION['other-image']['thumb'][$imgkey]);
    }

是的,它在工作。但是我无法得到逻辑。你能详细说明一下吗?From-如果在数组中找到针,则返回针的键,否则返回FALSE。在你的示例中,你正在搜索“1526973657.jpg”,它位于数组的
0
索引上,因此数组搜索将返回
0
。如果你编写
if($imgkey)
,如果条件允许,它将不会进入内部,因此即使数据存在于数组中也不会被删除。是的,它工作正常。但我无法获得逻辑。您能否详细说明?From-如果在数组中找到针,则返回针的键,否则为FALSE。在您的示例中,您正在搜索“1526973657.jpg”,并且它位于数组的
0
索引上y so数组搜索将返回
0
。如果写入
if($imgkey)
,它将不会进入if条件内部,因此即使数据存在于数组中也不会被删除。