【问题标题】:Converting array to Drupal format将数组转换为 Drupal 格式
【发布时间】:2010-03-30 15:08:24
【问题描述】:

这个语句给了我在 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 的格式是什么?
  • print_r($user->roles) 给出以下结果: Array ([2] => authenticated user [5] => Line Manager)

标签: php arrays drupal multidimensional-array


【解决方案1】:

我不确定你的目标到底是什么。作为记录,$user->roles 的形式是

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

使用上面的语句,实际上得到的不是late用户角色,而是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;

【讨论】:

  • 嗯,我真的只是想获得“返回(end($user->roles))”所做的值“Line Manager”,但这与所需的格式不兼容 - 我需要插入“Line Manager”作为字段的值。但显然,如果直线经理是员工等,它将被替换为“员工”。不过,我不知道如何解释这一点,因为这是指定的格式,如果我尝试做其他任何事情,我会收到错误显示起来。
  • 这个:“全局 $user;return (end($user->roles));”给我这个错误消息:“默认值 PHP 代码返回了一个不正确的值。预期的格式:返回数组(0 => 数组('value' => value for value),//你通常想在这里停下来。提供更多值 // 如果您希望您的 '默认值' 是多值的:1 => 数组('value' => value for value), 2 => ... ); 返回值:Line Manager"
【解决方案2】:

为什么不简单:

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

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

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

global $user;

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

【讨论】:

  • 对不起,我应该澄清一下。我需要这种格式,因为这是内容分类法要求作为默认值的格式。我还需要自动执行此操作 - 即我不想指定要使用的角色,因此说明结束或该角色最终所在的位置是我的解决方案 - 密钥由 Drupal 根据自动分配ID,但我知道我想要的角色永远在那个位置。
【解决方案3】:

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

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

所以我猜你必须构建一个多维数组是吗?使其格式正确...

【讨论】:

  • 考虑通过单击旁边的“勾选”或“检查”图标将此答案标记为“已接受”
猜你喜欢
  • 2011-11-24
  • 2011-07-03
  • 2020-07-24
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多