我有一个名为“values”的多维数组。这就是var_dump($values)
现在的样子。
array(1) {
[0]=> array(3) {
["content"]=> array(1) {
["items"]=> array(4) {
[0]=> string(4) "3121"
[1]=> string(4) "3116"
[2]=> string(4) "3115"
[3]=> string(4) "3114"
}
}
["options"]=> array(8) {
["title"]=> string(7) "inherit"
["size"]=> string(4) "tiny"
["orderby"]=> string(4) "date"
["order"]=> string(4) "desc"
["filter"]=> string(8) "category"
["pagination"]=> bool(false)
["per_page"]=> int(12)
["content"]=> array(3) {
[0]=> string(5) "title"
[1]=> string(7) "excerpt"
[2]=> string(4) "tags"
}
}
["__version"]=> string(5) "2.3.1"
}
}
这是我用来取消设置值的代码
//before unset
var_dump($values);
$ID = "3121";
foreach ($values as $value) {
foreach($value['content']['items'] as $key => $val) {
if($val == $ID) {
unset($value['content']['items'][$key]);
}
}
}
//after unset
var_dump($values);
我的var_dump即使在未设置后也看起来相同。我认为我的阵列没有设置不起作用。有人能告诉我我的代码有什么问题吗?
答案 0 :(得分:6)
在php数组中,通过值而不是通过引用更改传递
foreach ($values as $value) {
到
foreach ($values as &$value) {
有关相关文档,请参阅here。
答案 1 :(得分:3)
您没有在for循环中放置$key
变量并更改您必须使用引用的值
foreach ($values as &$value) {
foreach($value['content']['items'] as $key => $val) {
if($val == $ID) {
unset($value['content']['items'][$key]);
}
}
}
答案 2 :(得分:0)
foreach ($values as &$value)