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)
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)
PHP array_column
$new_array = array_column($old_array,0);
Run Code Online (Sandbox Code Playgroud)
这将检索$ old_array中每个数组的索引0处的值.也可以与关联数组一起使用.
foreach($array as $key=>$val) {
$newarr[$val] = $array[$key][$val];
}
Run Code Online (Sandbox Code Playgroud)
未经测试!