php - 通过给定键从对象数组中删除一个元素
php - remove an element from array of objects by given key
我有一个 class:
class user{
public $login = "userlogin";
public $pass = "userpass";
function __construct() {
$this->login = $_POST['slogin'];
$this->pass = $_POST['spass'];
}
function display() {
return $this->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);
}
所有这些都有效,现在我想通过提供用户名($class->login)来删除一些用户,所以我写道:
function deleteUser($name,$array) {
unset($array[$name]);
}
if (isset($_POST['submitDelete'])) {
deleteUser($_POST['sdelete'],$users);
dataStore($users, $dataFile);
}
html :
<div class="box-login" id="tab-login">
<form method="POST" action="" >
<p> enter username: <input type="text" name="slogin"/></p>
<p> enter password: <input type="text" name="spass"/></p>
<p> create new account -> <input type="submit" name="submit" /></p>
</form>
</div>
<div class="box-deleteUser" id="tab-deleteUser">
<form method="POST" action="" >
<p> <input type="text" name="sdelete" /> <input type="submit" name="submitDelete" value="usuń"/> </p>
</form>
</div>
但这不起作用,为什么?我不知道怎么了,你能指点我吗?
看起来您需要 return 来自 deleteUser() 函数的数组,然后在您的 dataStore() 函数中使用它。
编辑 - 加上约瑟夫所说的:)
所以,就像 Paul Riley 说的那样,我们必须 return 值,或者通过对函数的引用传递数组(默认它是通过值传递),
为此,我们在变量名前放置一个符号 (-> '&'):
function deleteUser($name,&$array) { //
unset($array[$name]);
}
我有一个 class:
class user{
public $login = "userlogin";
public $pass = "userpass";
function __construct() {
$this->login = $_POST['slogin'];
$this->pass = $_POST['spass'];
}
function display() {
return $this->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);
}
所有这些都有效,现在我想通过提供用户名($class->login)来删除一些用户,所以我写道:
function deleteUser($name,$array) {
unset($array[$name]);
}
if (isset($_POST['submitDelete'])) {
deleteUser($_POST['sdelete'],$users);
dataStore($users, $dataFile);
}
html :
<div class="box-login" id="tab-login">
<form method="POST" action="" >
<p> enter username: <input type="text" name="slogin"/></p>
<p> enter password: <input type="text" name="spass"/></p>
<p> create new account -> <input type="submit" name="submit" /></p>
</form>
</div>
<div class="box-deleteUser" id="tab-deleteUser">
<form method="POST" action="" >
<p> <input type="text" name="sdelete" /> <input type="submit" name="submitDelete" value="usuń"/> </p>
</form>
</div>
但这不起作用,为什么?我不知道怎么了,你能指点我吗?
看起来您需要 return 来自 deleteUser() 函数的数组,然后在您的 dataStore() 函数中使用它。
编辑 - 加上约瑟夫所说的:)
所以,就像 Paul Riley 说的那样,我们必须 return 值,或者通过对函数的引用传递数组(默认它是通过值传递), 为此,我们在变量名前放置一个符号 (-> '&'):
function deleteUser($name,&$array) { //
unset($array[$name]);
}