dongpu1315
2018-05-22 07:27
浏览 34
已采纳

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

I have an array of image data like this:

[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
                )

        )

Now I want to delete an image and it's all related data from sub arrays. (path, type, thumb data)

This is how I tried it in 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]);
  }

But problem is I can't delete related data from other arrays. Can anybody tell me how to do this? Thank you.

图片转代码服务由CSDN问答提供 功能建议

我有一个像这样的图像数据数组:

   [other-image] => 数组
(
 [img] =>数组
(
 [0] => 1526973657.jpg 
 [1] => 1526973661.jpg 
 [2] => 1526973665.jpg \  n)
 
 [path] =>数组
(
 [0] => ../post-upload/1/
 [1] => ../post-upload/1/  
 [2] => ../post-upload/1/
)
 
 [type] =>数组
(
 [0] => 1 
 [1] =>  ; 1 
 [2] => 1 
)
 
 [thumb] =>数组
(
 [0] => thumb_1526973661.jpg 
 [1] => thumb_1526973665.jpg  
 [2] => thumb_1526973668.jpg 
)
 
)
   
 
 

现在我要删除一个图像,它是来自sub的所有相关数据 阵列。 (路径,类型,拇指数据)

这是我在 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]); 
} 
   
 
 

但问题是我无法从其他数组中删除相关数据。 任何人都可以告诉我该怎么做? 谢谢。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douyu0725 2018-05-22 07:46
    已采纳

    You should use !==false after array_search() because it may return first index i.e. 0 in some cases, so your condition will not executed. And regarding delete related data from other arrays, you have to unset other data related to that key.

    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]);
        }
    
    已采纳该答案
    打赏 评论
  • dsa5233 2018-05-22 07:35

    Is the related data has same key with img? If they are same, I think you only need to add some codes to delete other data like the way was used to delete 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]);
    
    打赏 评论
  • douzhicai7148 2018-05-22 07:36

    If the keys in img sub-array are related with the same key(index) in sub-arrays(path, type and thumb, you can also unset those keys. e.g.

    $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]);
        }
    }
    
    打赏 评论

相关推荐 更多相似问题