【问题标题】:Merging Arrays into one Array and populate keys with same values将数组合并为一个数组并使用相同的值填充键
【发布时间】:2021-12-01 18:21:32
【问题描述】:

我需要将数组合并为一个数组,并将$key替换为同一个数组的$values。

我的数组如下所示:

Array 
( 
  [0] => Array 
  ( 
  [city] => Berlin 
  ) 
  [1] => Array 
  ( 
  [city] => London
  ) 
  [2] => Array 
  ( 
  [city] => New York 
  )
  [3] => Array 
  ( 
  [city] => Vienna
  )
)

想要的结果

Array 
( 
  [Berlin] => Berlin 
  [London] => London
  [New York] => New York 
  [Vienna] => Vienna
)

更新: 源代码如下:

$a = json_decode('[{"city":"Berlin"},{"city":"London"},{"city":"New York"}, {"city":"Vienna"}]', true);```

【问题讨论】:

  • 你有没有尝试过?
  • 是的,我,我尝试使用 call_user_func_array 、array_walk_recursive、array_column...

标签: php arrays json sorting


【解决方案1】:

你可以使用array_column :

$res = array_column($array, 'city');

这将为您提供结果,但作为键,您将拥有整数值,若要将城市也作为键,请检查 @u_mulder 答案

【讨论】:

  • 只有[Berlin. London ...] 和数字键。可能array_column($array, 'city', 'city'); 可能会完成这项工作。
  • @u_mulder 你说得对
【解决方案2】:
$a = [['city' => 'Berlin'], ['city' => 'London']];
$b = [];

foreach ($a as $arr) $b[$arr['city']] = $arr['city'];

print_r($b);

结果:

Array ( [Berlin] => Berlin [London] => London )

【讨论】:

  • 这是我如何得到它的来源,来源是 JSON,如果使用 json_decode 这不起作用:[ { "value": "0 800 nnn nnnn" }, { "value": “00 800-nnnnnnnn”},{“价值”:“国家(720)”},{“价值”:“维也纳”}]
  • 您可以$array = json_decode($json, true); 将其转换为数组。 true 是必需的。
  • 第二个选项3v4l.org/daJsf
  • {"city":"New York"之后缺少}
【解决方案3】:

Oneliner 是:

$newArray = array_column($yourArray, 'city', 'city');

小提琴here.

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2012-09-11
    • 2020-04-17
    • 2021-12-04
    • 2013-06-11
    • 2014-08-09
    相关资源
    最近更新 更多