Php 将数组转换为Drupal格式

Php 将数组转换为Drupal格式,php,arrays,drupal,multidimensional-array,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 valu

此语句为我提供了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 => ...
);
我也不知道如何,这种格式是多维数组吗

有什么想法吗?
谢谢你的帮助,西奥。

我不知道你的确切目的是什么。对于记录,$user->roles的形式为

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;
为什么不简单地:

global $user;
print_r($user->roles);
这将向您显示一个用户角色。我不知道你为什么要最后一个。它已经以您要求的格式返回。从那里,你可以提取你想要的角色

要将它们移动到键控阵列中,请执行以下操作:

global $user;

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

谢谢你的帮助,你让我现在更了解这一点。结果证明它不起作用,因为你必须使用身份证号码而不是姓名。最后的代码是:

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

所以我猜你必须建立一个多维数组,是吗?要使其格式正确…

$user->roles是什么格式?print\r$user->roles会给出以下结果:Array[2]=>authenticated user[5]=>Line Manager抱歉,我应该对此进行澄清。我需要这种格式,因为这是内容分类法要求作为默认值的格式。我还需要自动完成这项工作——也就是说,我不想指定要使用哪个角色,所以我的解决方案是声明结束或该角色将结束的位置——Drupal根据ID自动分配密钥,但我知道我想要的角色将始终处于该位置。嗯,实际上,我只是尝试获取返回end$user->roles的值行管理器,但它与所需的格式不兼容-我需要插入行管理器作为字段的值。但显然,如果是员工,直线经理将被替换为员工,等等。我不知道如何解释这一点,因为这是指定的格式,如果我尝试执行任何其他操作,我会显示错误。这是:global$user;返回end$user->roles;给我这个错误消息:PHP代码返回的默认值不正确。预期格式:返回数组0=>array'value'=>value for value,//您通常希望在这里停止。提供更多值//如果希望“默认值”为多值:1=>array'value'=>value-for-value,2=>;返回值:行管理器考虑通过单击旁边的勾选或复选图标将此答案标记为已接受