2010-03-30 20 views
1

這種說法讓我想在Drupal的值(即最後一個用戶角色):轉換陣列Drupal的格式

global $user; return (end($user->roles)); 

不過,我需要將其轉換爲這種格式:

return array(
    0 => array('value' => value for value), 
    // You'll usually want to stop here. Provide more values 
    // if you want your 'default value' to be multi-valued: 
    1 => array('value' => value for value), 
    2 => ... 
); 

我也不知道如何(也是,這種格式是一個多維數組?)...

任何想法? 謝謝你的幫助,Theo。

+0

'$ user-> roles'是什麼格式? – 2010-03-30 15:13:08

+0

print_r($ user-> roles)給出以下結果: Array([2] =>已認證的用戶[5] =>直線管理器) – theo 2010-03-30 15:21:19

回答

0

我不確定你準確瞄準什麼。備案$用戶形式>角色是

array(
    rid => 'role_name', 
    ... 
) 

使用上面的語句,你實際上沒有得到末的用戶角色,但最高ID的用戶角色。

我猜你想得到這樣的格式,你不是要清楚這一點。

array(
    0 => array(rid => 'role_name'), 
    1 => array(rid => 'role_name'), 
    ... 
) 

,如果是這樣的話,你可以用一個簡單的foreach循環得到它:

$result = array(); 
foreach ($user->roles as $key => $value) { 
    $result[] = array($key => $value); 
} 
return $result; 
+0

嗯,真的,我只是想獲得值「Line Manager」哪些「返回(結束($用戶 - >角色))」,但這是不符合所需的格式 - 我需要插入「直線經理」作爲字段的值。但顯然,如果Line Manager是員工等,將被替換爲「員工」。我不知道該如何解釋這一點,因爲這是指定的格式,如果我嘗試做其他任何事情,我會顯示錯誤向上。 – theo 2010-03-30 16:46:24

+0

這是:「global $ user; return(end($ user-> roles));」 給我此錯誤消息: 「的默認值PHP代碼返回一個不正確的值 預期格式: 返回陣列( 0 =>數組(‘值’=>對值的值), //你」我通常會想在這裏停下來。提供更多的值 //如果您希望您的'默認值'爲多值: 1 => array('value'=> value for value), 2 => ... ); 。 返回值:線經理」 – theo 2010-03-30 17:00:41

0

爲什麼不乾脆:

global $user; 
print_r($user->roles); 

會告訴你一個用戶的角色。我不確定你爲什麼想要最後一個。它已經以您要求的格式返回。從那裏你可以提取你正在尋找的角色。

將其移動到一個鍵陣列:

global $user; 

$result = array(); 
foreach ($user->roles as $key => $value) { 
    $result[] = array($key => $value); 
} 
return $result; 
+0

對不起,我應該澄清這一點,我需要它以這種形式,因爲這是它的內容分類,需要作爲默認值的格式,我還需要自動執行此 - 即我不知道。想要指定要使用哪個角色,所以說明結尾或角色最終的位置就是我的解決方案 - 密鑰由Drupal根據ID自動分配,但我知道我想要的角色將始終 – theo 2010-03-30 15:42:12

0

感謝您的幫助 - 你讓我明白了這個更多了。事實證明,它不起作用,因爲你必須使用一個身份證號碼,而不是一個名字。所以最終的代碼是:

global $user; 
return array(
0 => array('value' => end($user->roles)) 
); 

所以我想你是不得不建立一個多維數組呢?因爲這是正確的格式...

+0

考慮通過點擊旁邊的「勾號」或「檢查」圖標將此答案標記爲「接受」 – 2012-08-18 11:17:25