删除数组中的第一级标识符

Fre*_*rik 8 php arrays identifier levels

我认为这已经提前了,但无法找到任何答案.如果已经回答,请通过链接指向正确的方向.

我有一个数组,我不想删除第一级标识符.我认为这有一个功能吗?

它是如何形成的例子:

[0] => Array
        (
            [8] => Röd
        )

[1] => Array
        (
            [8] => Blå
        )

[2] => Array
        (
            [6] => Bobo
        )

[3] => Array
        (
            [8] => Grön
        )

[4] => Array
        (
            [7] => Sten
        )

[5] => Array
        (
            [8] => Vit
        )

[6] => Array
        (
            [7] => Guld
        )

[7] => Array
        (
            [6] => Lyxig
        )
Run Code Online (Sandbox Code Playgroud)

我想要的是

[8] => Röd
[8] => Blå
[6] => Bobo
[8] => Grön
[7] => Sten
[8] => Vit
[7] => Guld
[6] => Lyxig
Run Code Online (Sandbox Code Playgroud)

Aiv*_*ras 16

尝试将数组与 splat 运算符合并:

   print_r(array_merge(...$array));
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,由于命名参数,这可能会在 PHP 8 上崩溃。解决方法:`call_user_func_array( 'array_merge', array_values( $array ) )` (2认同)

pro*_*son 12

这里的问题是保留所需标识符的键.你有一些具有相同键的名称字符串(如Blå和Röd).您需要将这些存储在数组中或者愿意丢失密钥.

php5.3示例:

$processed = array_map(function($a) {  return array_pop($a); }, $arr);
Run Code Online (Sandbox Code Playgroud)

这会给你:

[0] => Röd
[1] => Blå
[2] => Bobo
[3] => Grön
[4] => Sten
[5] => Vit
[6] => Guld
[7] => Lyxig
Run Code Online (Sandbox Code Playgroud)

很明显,内部数组上的键需要保留,因为它们是某种id.有了这个说你必须改变你想要的结束结构,因为你可以在一个数组中有2个相同的键.最简单的结构变成:

[8] => Array
        (
            [0] => Röd,
            [1] => Blå,
            [2] => Vit,
            [3] => Grön
        )

[6] => Array
        (
            [0] => Bobo,
            [1] => Lyxig
        )

[7] => Array
        (
            [0] => Sten,
            [1] => Guld
        )
Run Code Online (Sandbox Code Playgroud)

要获得此结构,一个简单的循环将起作用:

$processed = array();
foreach($arr as $subarr) {
   foreach($subarr as $id => $value) {
      if(!isset($processed[$id])) {
         $processed[$id] = array();
      }

      $processed[$id][] = $value;
   }
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*ton 5

PHP array_column

$new_array = array_column($old_array,0);
Run Code Online (Sandbox Code Playgroud)

这将检索$ old_array中每个数组的索引0处的值.也可以与关联数组一起使用.


Luc*_*Luc 0

foreach($array as $key=>$val) { 
  $newarr[$val] = $array[$key][$val]; 
} 
Run Code Online (Sandbox Code Playgroud)

未经测试!

  • 应该补充一点,重复的密钥当然是不可能的,并且会被覆盖。 (3认同)