php - 通过给定键从对象数组中删除元素

时间:2016-06-23 10:36:41

标签: php unset

我有一个班级:

score

我将其所有实例写入文件:

class user{

    public $login = "userlogin";
    public $pass  = "userpass";

    function __construct() {
        $this->login = $_POST['slogin'];
        $this->pass = $_POST['spass'];
    }
    function display() {
        return $this->login;
    }
}

并且所有这些都有效,现在我想删除一些用户的名字($ class-> login),所以我写道:

function dataStore ($obj, $dataFile) {
    $dataTmp .= serialize($obj);
    file_put_contents($dataFile, $dataTmp);
}

if (isset($_POST['submit'])) {

        $newuser = new user();
        $users[ $newuser->login ] = $newuser;       

        dataStore($users, $dataFile);                    
    }

html:

function deleteUser($name,$array) {
   unset($array[$name]);        
}

if (isset($_POST['submitDelete'])) {

        deleteUser($_POST['sdelete'],$users);
        dataStore($users, $dataFile);    
    }

但这不起作用,为什么?我无法弄清楚什么是错的,你能以某种方式指出我吗?

2 个答案:

答案 0 :(得分:1)

看起来你需要从deleteUser()函数返回数组,然后在dataStore()函数中使用它。

编辑 - 再加上约瑟夫说的话:)

答案 1 :(得分:0)

所以,像Paul Riley说的那样我们必须返回值,或者通过引用函数传递数组(默认是传递值), 要做到这一点,我们在变量名称之前添加&符号(>'&'):

function deleteUser($name,&$array) {   // 
   unset($array[$name]);

}