array_flip 值中有一个数组
array_flip with an array in the value
简单一个(还没解决):这是我的数组
[
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
]
我很想看到这个结果:
[
"Felipy" => "admin",
"Ivan" => "admin",
"Michael" => "user",
"Paul" => "user",
"Tay" => "user",
]
我已经试过了array_flip
试试这个DEMO
$original = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
]
];
$arr = [];
foreach ($original as $value)
{
foreach($value['name'] as $name)
{
$arr[$name] = $value['role'];
}
}
试试这个:
foreach ($yourArr as $role) {
foreach ($role['name'] as $user) {
$arr[$user] = $role['role'];
}
}
不太清楚但仍然有效的解决方案:
$a = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
],
];
$r = [];
foreach ($a as $item) {
$r = array_merge($r, array_fill_keys($item['name'], $item['role']));
}
echo'<pre>',print_r($r),'</pre>';
试试这个Live demo
$array = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
]
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay"
]
]
];
$result = array_reduce($array, function($carry, $key) {
foreach ($key['name'] as $name)
$carry[$name] = $key['role'];
return $carry;
}, []);
var_dump($result);
简单一个(还没解决):这是我的数组
[
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
]
我很想看到这个结果:
[
"Felipy" => "admin",
"Ivan" => "admin",
"Michael" => "user",
"Paul" => "user",
"Tay" => "user",
]
我已经试过了array_flip
试试这个DEMO
$original = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
]
];
$arr = [];
foreach ($original as $value)
{
foreach($value['name'] as $name)
{
$arr[$name] = $value['role'];
}
}
试试这个:
foreach ($yourArr as $role) {
foreach ($role['name'] as $user) {
$arr[$user] = $role['role'];
}
}
不太清楚但仍然有效的解决方案:
$a = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
],
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay",
],
],
];
$r = [];
foreach ($a as $item) {
$r = array_merge($r, array_fill_keys($item['name'], $item['role']));
}
echo'<pre>',print_r($r),'</pre>';
试试这个Live demo
$array = [
[
"role" => "admin",
"name" => [
"Felipy",
"Ivan",
]
],
[
"role" => "user",
"name" => [
"Michel",
"Paul",
"Tay"
]
]
];
$result = array_reduce($array, function($carry, $key) {
foreach ($key['name'] as $name)
$carry[$name] = $key['role'];
return $carry;
}, []);
var_dump($result);