Php 如何将此阵列改造为不同结构的阵列
我有一个如下所示的数组:Php 如何将此阵列改造为不同结构的阵列,php,arrays,Php,Arrays,我有一个如下所示的数组: [0] => Array ( [name] => typeOfMusic [value] => this_music_choice ) [1] => Array ( [name] => myMusicChoice [value] => 9 ) [2]
[0] => Array
(
[name] => typeOfMusic
[value] => this_music_choice
)
[1] => Array
(
[name] => myMusicChoice
[value] => 9
)
[2] => Array
(
[name] => myMusicChoice
[value] => 8
)
$return = array();
foreach($originalArray as $data){
if(!isset($return[$data['name']])){
// This is the first time we've seen this name,
// it's not in $return, so let's add it
$return[$data['name']] = $data['value'];
}
elseif(!is_array($return[$data['name']])){
// We've seen this key before, but it's not already an array
// let's convert it to an array
$return[$data['name']] = array($return[$data['name']], $data['value']);
}
else{
// We've seen this key before, so let's just add to the array
$return[$data['name']][] = $data['value'];
}
}
我想把它改造成大致如下的结构:
Array(
"typeOfMusic" => "this_music_choice",
"myMusicChoice" => array(9, 8)
)
我写了以下内容,但不起作用:
foreach($originalArray as $key => $value) {
if( !empty($return[$value["name"]]) ){
$return[$value["name"]][] = $value["value"];
} else {
$return[$value["name"]] = $value["value"];
}
}
return $return;
我已经尝试了很多不同的组合,试图让这个工作。我的原始数组可能包含多组需要转换为数组的键(即,不一定只有“myMusicChoice”需要转换为数组)
我做这件事毫无进展,希望能得到一些帮助。非常感谢。您只需在数据上循环,并使用名称/值创建一个新数组。如果看到重复名称,则将该值更改为数组 大概是这样的:
[0] => Array
(
[name] => typeOfMusic
[value] => this_music_choice
)
[1] => Array
(
[name] => myMusicChoice
[value] => 9
)
[2] => Array
(
[name] => myMusicChoice
[value] => 8
)
$return = array();
foreach($originalArray as $data){
if(!isset($return[$data['name']])){
// This is the first time we've seen this name,
// it's not in $return, so let's add it
$return[$data['name']] = $data['value'];
}
elseif(!is_array($return[$data['name']])){
// We've seen this key before, but it's not already an array
// let's convert it to an array
$return[$data['name']] = array($return[$data['name']], $data['value']);
}
else{
// We've seen this key before, so let's just add to the array
$return[$data['name']][] = $data['value'];
}
}
演示:您只需在数据上循环,并使用名称/值创建一个新数组。如果看到重复名称,则将该值更改为数组 大概是这样的:
[0] => Array
(
[name] => typeOfMusic
[value] => this_music_choice
)
[1] => Array
(
[name] => myMusicChoice
[value] => 9
)
[2] => Array
(
[name] => myMusicChoice
[value] => 8
)
$return = array();
foreach($originalArray as $data){
if(!isset($return[$data['name']])){
// This is the first time we've seen this name,
// it's not in $return, so let's add it
$return[$data['name']] = $data['value'];
}
elseif(!is_array($return[$data['name']])){
// We've seen this key before, but it's not already an array
// let's convert it to an array
$return[$data['name']] = array($return[$data['name']], $data['value']);
}
else{
// We've seen this key before, so let's just add to the array
$return[$data['name']][] = $data['value'];
}
}
演示:这里有一个干净的解决方案,它使用
这是一个干净的解决方案,它使用
好东西。非常感谢。不知道为什么我的问题总是被“扣分”。它当然不鼓励使用该网站,因为似乎防止“减价”的唯一方法是在得到答案后立即删除一个问题?感谢火箭队的出色回答,也感谢mxmul的帮助。很高兴我能提供帮助:-我不知道为什么这个问题被记下来,我不认为这是一个坏问题。也许已经有一个类似的问题和答案了?这就是我所能想到的你为什么会被减价的原因。太棒了。非常感谢。不知道为什么我的问题总是被“扣分”。它当然不鼓励使用该网站,因为似乎防止“减价”的唯一方法是在得到答案后立即删除一个问题?感谢火箭队的出色回答,也感谢mxmul的帮助。很高兴我能提供帮助:-我不知道为什么这个问题被记下来,我不认为这是一个坏问题。也许已经有一个类似的问题和答案了?这就是我所能想到的你为什么会被减价的原因。请你告诉我减价的原因好吗?这篇文章简洁明了,足以说明我的勤勉。我错过什么了吗?谢谢。你能告诉我这个问题降价的原因吗?这篇文章简洁明了,足以说明我的勤勉。我错过什么了吗?谢谢。嗨,罗尼,这是一个很棒的解决方案。非常简洁。在发布问题之前,我确实查看了php数组函数的列表,看看是否有任何函数看起来可以完成这项工作,但我没有真正了解如何使用array\u reduce。我将坚持“接受”火箭队的答案,因为这对我来说是一个更简单的解决方案(在我的水平上),我理解这将使未来的故障查找更容易。但非常感谢您出色的解决方案。:-)嗨,罗尼,这是一个很棒的解决方案。非常简洁。在发布问题之前,我确实查看了php数组函数的列表,看看是否有任何函数看起来可以完成这项工作,但我没有真正了解如何使用array\u reduce。我将坚持“接受”火箭队的答案,因为这对我来说是一个更简单的解决方案(在我的水平上),我理解这将使未来的故障查找更容易。但非常感谢您出色的解决方案。:-)