我想取消设置类的成员数组变量的第一个值,但我无法:
<?php
class A
{
public function fun()
{
$this->arr[0] = "hello";
}
public $arr;
}
$a = new A();
$a->fun();
$var ="arr";
unset($a->$var[0]); //does not unset "hello" value
print_r($a);
在Google搜索后找不到任何解决方案。如何动态删除第一个值?
答案 0 :(得分:2)
尝试以下方法:
unset($a->{$var}[0]);
您的代码存在问题,PHP尝试访问成员变量$var[0]
(null
)而不是$var
。
答案 1 :(得分:0)
答案 2 :(得分:0)
<?php
class A
{
public function fun()
{
$this->arr[0] = "hello";
}
public $arr;
}
$a = new A();
$a->fun();
// no need to take $var here
// you can directly access $arr property wihth object of class
/*$var ="arr";*/
// check the difference here
unset($a->arr[0]); //unset "hello" value
print_r($a);
?>
尝试这个
答案 3 :(得分:0)
由于$ arr是A类的成员并且声明为public,因此您可以直接使用
$a = new A();
$a->fun();
unset $a->arr[0];
但是你会惊讶的是,对于数字索引数组,未设置可能会带来问题。
假设您的数组是这样的;
$arr = ["zero","one","two","three","four"];
unset($arr[2]); // now you removed "two"
echo $arr[3]; // echoes three
现在数组是[“零”,“一”,未定义,“三”,“四”];
$ arr [2]不存在,未定义,其余部分未重新索引......
对于使用以下方法的数字索引数组更好:
$arr = ["zero","one","two","three","four"];
array_splice($arr,2,1); // now you removed "two" and reindexed the array
echo $arr[3]; // echoes four...
现在数组是[“零”,“一”,“三”,“四”];