在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条件内部,因此即使数据存在于数组中也不会被删除。