2016-06-23 5 views
1

与えられたことにより、オブジェクトの配列から要素を削除します。PHP - 私はクラスを持っているキー

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);      
    } 

、すべてのこの作品を今、私はその名前($クラス - >ログイン)を与えることによって、いくつかのユーザーを削除したいので、私は書いた:

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> 

これは機能しませんが、なぜですか?私は何が間違っているのか分からない、どうか私に指摘できますか?

+1

なぜそれが機能していないと思いますか?どのようなエラーメッセージが表示されますか? '$ users'配列の内容を表示できますか? – codedge

+0

'deleteUser()'はあなたが保存したファイルから '$ users'を最初に取得し、次にこの配列を変更してから' dataStore() 'を再度変更する必要があります。現在、あなたは 'deleteUser($ _ POST ['sdelete']、$ users)'を呼び出しますが、このコンテキストでは '$ users'にアクセスすることはできません。 – Joseph

+0

いいえ、実際はそうです。私はちょうどコードのこの部分を貼り付けていませんでした。私のせい。 – linearSpin

答えて

1

あなたはdeleteUser()関数から配列を返し、それをあなたのdataStore()関数で使用する必要があるようです。

編集 - プラスジョセフは:)

+0

はい、これがポイントでなければなりません!答えをありがとう。 – linearSpin

0

ので、ポール・ライリーは、我々は値を返す、またはこれを行うには、(それが値渡しされるデフォルト)関数に を参照することにより、配列を渡す必要が言ったように言いました変数名の前にアンパサンド( - > '&')を置きます。

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

} 
関連する問題