2016-11-28 11 views
-2

私は、各ユーザーの詳細を他の配列を含む配列を持つ例:。私が書いた使用し、配列でカウント

$_SESSION["ActQueue"] = [["J.Paul", "John", "Paul", "0000-00-00 00:00:00"],["J.Bloggs", "Joe", "Bloggs", "0000-00-00 00:00:00"]] 

あるコードのビットは、「アカウントのランクをオンにする意味データベース内の "Cadet"に配列の最初のユーザーの "コードは配列からユーザーを削除し、存在するかどうかによってdata = 1またはリストの次のユーザーをエコーする必要があります。私は以下のコードでこれを行いましたが、未設定の場合、最初の項目を削除するとキーが1にシフトしないので、0は単に存在しないで、1は "J.Bloggs"になります。その結果、次のユーザーがエコーされると、値は送信されません。助言がありますか?

<?php 
session_start(); 

require "classes.php"; 
$TF = new TF_Core(); 

$ActQueueAccept = "UPDATE users 
    SET rank = 'Cadet' 
    WHERE username = ?"; 

if ($statement = TF_Core::$MySQLi->DB->prepare($ActQueueAccept)) { 
    $statement->bind_param('s',$_SESSION["ActQueue"][0][0]); 
    $statement->execute(); 
} 

unset($_SESSION["ActQueue"][0]); 

if(count($_SESSION["ActQueue"] != 0)){ 
    echo json_encode(['Username'=>$_SESSION["ActQueue"][0][0], 'Surname'=>$_SESSION["ActQueue"][0][1],'Forename'=>$_SESSION["ActQueue"][0][2],'Joined'=>$_SESSION["ActQueue"][0][3]]); 
} 
else{ 
    $data = 1; 
    echo $data; 
} 
?> 
+0

json_encodeのインデックスは0のみです$ _SESSION ["ActQueue"] [0] [0]これはすべて$ _SESSION ["ActQueue"] [1] [0]と同じです –

+0

コードのみをチェックします: - https ://eval.in/686735。そして何が起こったのか教えてください –

+0

あなたが何を意味するのかよく分かりません。あなたが$ _SESSION ["ActQueue"] [1] [0]をエコーし​​なければならないと言っているならば、データを含む最初の項目が0でなければならないので動作しません。そうしないと、最初のユーザーが戻ってくるので、私は$ _SESSION ["ActQueue"] [45] [0]をやることになります。理論的にはうまくいくはずですが、アレイから何回何が削除されたかを追跡するのは非常に難しいようです。 –

答えて

1
unset($_SESSION["ActQueue"][0]); 
$_SESSION["ActQueue"] = array_values($_SESSION["ActQueue"]); 

unset()は常に配列のキーをリセットしないようです。関数array_valuesは配列を正しいキーで再定義し/インデックスします。

関連する問題