我有一组像这样的图像数据:
[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]);
}
但问题是我无法从其他数组中删除相关数据。 谁能告诉我怎么做? 谢谢。
答案 0 :(得分:1)
相关数据与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]);
答案 1 :(得分:1)
如果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]);
}
}
答案 2 :(得分:1)
您应该在!==false
之后使用array_search()
,因为它可能会返回第一个索引,在某些情况下会返回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]);
}