2013-08-23 79 views
0

這裏就是我想要做:PHP會話變量沒有得到增加

function increment_users($id){ 
    $rooms = $_SESSION['rooms_array']; 
    //var_dump($rooms); 
    foreach ($rooms as $room) { 
     if($room['id'] == $id){$room['users']=$room['users']+1;} 
    } 
    session_write_close(); 
} 

間的用戶不被遞增。我檢查過服務器的會話設置。? 已經感謝。

這裏是整個代碼,請大家幫忙:

ini_set(' session.save_path','C:/session'); 
session_start(); 
$requested_room_id = $_REQUEST['new_room_id']; 

//echo $requested_room_id; 
function create_new_room($id, $current_users) { 
    $room = array(); 
    $room ['id'] = $id; 
    $room ['users'] = $current_users; 
    $_SESSION['rooms_array'][]=$room; 
} 

function increment_users($id){ 
    $rooms = $_SESSION['rooms_array']; 
    //var_dump($rooms); 
    foreach ($rooms as $room) { 
     if($room['id'] == $id){$room['users']=$room['users']+1;} 
    } 
    $_SESSION['rooms_array'] = $rooms; 
} 

$rooms = $_SESSION['rooms_array']; 

$room_available = false; 
$room_available_ids = array(); 
var_dump($rooms); 
if ($rooms) { //check if there is a room with space 
foreach ($rooms as $room =>$val) { 
    //echo $val['users']; 
    if ($val ['users'] < 4) { 
     $room_available = true; 
     $room_available_ids [] = $val ['id']; 
    } 
} 

} 
if ($room_available) { //if there is a room available, add requesting client to the room 
    $room_available_id = array_pop ($room_available_ids); 
    increment_users($room_available_id); 

    echo $room_available_id; 
} 
else { //create a new room otherwise 
    $rand11=rand(1000000, 99999999); 
    if(!$room_available) {$new_room = create_new_room($rand11, 1);} 
    echo $rand11; 
} 

的代碼是罰款累計。對我來說,我只是無法找到問題所在。下面是該陣列由在的var_dump代碼傾倒:

array(1) { 
    [0]=> 
    array(2) { 
    ["id"]=> 
    int(63594055) 
    ["users"]=> 
    int(1) 
    } 
} 

回答

0

固定它自己。我用這個代碼,如果有人幫助:

function increment_users($id){ 
    $rooms = $_SESSION['rooms_array']; 
    //var_dump($rooms); 
    foreach ($rooms as $room) { 
     if($room['id'] == $id){$_SESSION['rooms_array'][$id]['users'] = $room['users']+1;} 
    } 
0

嘗試盧克

$rooms = $_SESSION['rooms_array']; 
//var_dump($rooms); 
foreach ($rooms as $room) { 
    if ($room['id'] == $id) { 
     $_SESSION['rooms_array'][$room['users']] = $room['users'] + 1; 
    } 
} 

或者直接

foreach ($rooms as $room) { 
    if ($room['id'] == $id) { 
     $room['users']=$room['users']+1; 
    } 
} 
$_SESSION['rooms_array'] = $rooms; 

但我建議你第一隻ans.Which更新記錄滿足條件。

+0

仍然無法工作 –

+0

兩者都不工作.. ?? – Gautam3164

+0

否,第一個結果在一個錯誤的數組:'陣列(3){ [0] => 陣列(2){ [ 「ID」] => INT(98909332) [ 「用戶」] => INT(1) } [1] => INT(2) [ 「」] => INT(1) }',第二個完全不遞增值! –

1

你應該檢查後更新您的會話:

function increment_users($id){ 
    $rooms = $_SESSION['rooms_array']; 
    foreach ($rooms as $room) { 
     if($room['id'] == $id){$room['users']=$room['users']+1;} 
    } 
    $_SESSION['rooms_array'] = $rooms; 
}