将数组转换为Drupal格式

时间:2010-03-30 15:08:25

标签: php arrays drupal multidimensional-array

这个语句给了我在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。

3 个答案:

答案 0 :(得分:0)

我不确定你的目标是什么。对于记录,$ user->角色的形式是

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;

答案 1 :(得分:0)

为什么不简单:

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

这将显示用户角色。我不确定你为什么要最后一个。它已经以您要求的格式返回。从那里到你,以提取你正在寻找的角色。

将它们移动到键控数组中:

global $user;

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

答案 2 :(得分:0)

感谢您的帮助 - 您现在让我更加了解这一点。事实证明它不起作用,因为你必须使用ID号而不是名字。所以最终的代码是:

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

所以我猜你要建立一个多维数组呢?为此,格式正确......