2012-07-16 99 views
2

我有這個陣列方案在第一次:PHP - 故障增值第三維數組

$_SESSION['player_1_pawn'][] = 'Warrior'; 

現在,當我想添加像這樣的第三維的值:

$_SESSION['player_1_pawn'][0]['x'] = 1; 

我得到從

>$_SESSION['player_1_pawn'][0] : '1arrior' 

我的問題這個輸出是,如何使該值作爲保持不變而不是1arrior

回答

6

如果值已經是一個字符串,['x']訪問該字符串的第一個字符(是的,不要問;))。

如果你想用一個數組來代替整個事情,這樣做:

$_SESSION['player_1_pawn'][0] = array('x' => 1); 

你不能$_SESSION['player_1_pawn'][0]被兩個字符串「勇士」 同時數組,因此找出哪些你想要它。大概是:

$_SESSION['player_1_pawn'][0] = array('type' => 'Warrior', 'x' => 1); 
+1

你這該死的是faaaaaaaa AST :),但是[0]沒有他的情況下訪問的第一個字符,這是「X」 – Moak 2012-07-16 10:25:42

+0

@deceze:感謝您的時間和答案,它工作得很好。 – macford 2012-07-16 10:29:39

+0

@Moak真,打字錯誤。謝謝。 – deceze 2012-07-16 10:43:58

0

您的問題是$_SESSION['player_1_pawn'][0]是一個標值等於「戰士」。當你把一個標爲數組,像你$_SESSION['player_1_pawn'][0]['x']這evalueates $_SESSION['player_1_pawn'][0][0]或「W」這樣做,你只需要改變字符串中的第一個字符。

如果你想保持 「回力」 試試這個:

$_SESSION['player_1_pawn']=array('Warrior', 'x'=>1); 

ETA:

給您的要求,其結構是這樣的:

$_SESSION['player_1_pawn'] = array(
    0 => array('Warrior', 'x'=>1), 
    1 => array('Wizard', 'x'=>7), //... 
); 

這意味着你加入這樣的:

$_SESSION['player_1_pawn'][]=array('Warrior', 'x'=>1); 
+0

謝謝你的答案的答案,但它需要至少兩個維度,因爲玩家1已得到不僅是1個棋子,但5:d – macford 2012-07-16 10:49:12

+0

@macford:編輯答案來解決你的需求。 – dnagirl 2012-07-16 11:27:47