【问题标题】:PHP add keys to nested arraysPHP向嵌套数组添加键
【发布时间】:2012-08-12 02:05:53
【问题描述】:

我有没有键的嵌套数组。我想按特定顺序添加键。什么是干净的方法来做到这一点?

从这个数组开始。它仅按位置索引。

[0] => (
    [0] => Tyler
    [1] => Durden
    [2] => 05/07/1985
)
[1] => (
    [0] => Edward
    [1] => Norton
    [2] => 03/21/1988
)

现在按顺序应用这些键:

['first_name'] =>
['last_name'] =>
['birthday'] =>

最终数组:

[0] => (
   ['first_name'] => Tyler
   ['last_name'] => Durden
   ['birthday'] => 05/071985
)
[1] => (
    ['first_name'] => Edward
    ['last_name'] => Norton
    ['birthday'] => 03/21/1988
)

如果您的代码允许使用任何键结构,而不是硬编码,则可以加分!

【问题讨论】:

  • 我自己尝试使用一堆嵌套的 foreach 循环。必须存在一种更优雅的方法,这是非常低效的,而且很明显。我自己尝试过,谢谢。我也浏览了所有 PHP 函数,但没有意识到 array_combine 可以在这种情况下工作。

标签: php arrays dictionary key-value


【解决方案1】:

我认为array_combine 可以解决问题:

foreach ($bigarray as &$x) {
  $x = array_combine(array('first_name','last_name','birthday'),$x);
}

【讨论】:

  • ($bigarray as &$x) 中的和号是什么意思?
  • & 符号让我们循环遍历数组 by reference,以便我们可以随时更改数组值。
【解决方案2】:

也是经典算法:

foreach ( $array as $key=>$value ) {
   $array[$key]['first_name'] = $array[$key][0];
   $array[$key]['last_name'] = $array[$key][1];
   $array[$key]['birthday'] = $array[$key][2];
   unset($array[$key][0]);
   unset($array[$key][1]);
   unset($array[$key][2]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多