将PHP对象拆分为按属性值分组的多个对象
我有一个这样的对象,我想从中创建多个对象。我需要检查“group”的所有值,并为每个不同的组创建一个新对象将PHP对象拆分为按属性值分组的多个对象,php,Php,我有一个这样的对象,我想从中创建多个对象。我需要检查“group”的所有值,并为每个不同的组创建一个新对象 array (size=6) 0 => array (size=2) 'name' => string 'Cindy' 'group' => string 'GROUP A' 1 => array (size=2) 'name' => string 'Carl' 'group' =&g
array (size=6)
0 =>
array (size=2)
'name' => string 'Cindy'
'group' => string 'GROUP A'
1 =>
array (size=2)
'name' => string 'Carl'
'group' => string 'GROUP A'
2 =>
array (size=2)
'name' => string 'Anna'
'group' => string 'GROUP A'
3 =>
array (size=2)
'name' => string 'Mary'
'group' => string 'GROUP B'
4 =>
array (size=2)
'name' => string 'John'
'group' => string 'GROUP B'
5 =>
array (size=2)
'name' => string 'Frank'
'group' => string 'GROUP C'
对于上一个示例,我应该得到3个不同的对象,就像这样,每个对象都有一个不同的变量
array (size=3)
0 =>
array (size=2)
'name' => string 'Cindy'
'group' => string 'GROUP A'
1 =>
array (size=2)
'name' => string 'Carl'
'group' => string 'GROUP A'
2 =>
array (size=2)
'name' => string 'Anna'
'group' => string 'GROUP A'
array (size=2)
0 =>
array (size=2)
'name' => string 'Mary'
'group' => string 'GROUP B'
1 =>
array (size=2)
'name' => string 'John'
'group' => string 'GROUP B'
array (size=1)
0 =>
array (size=2)
'name' => string 'Frank'
'group' => string 'GROUP C'
也许你可以这样做——我不确定你是否知道你有多少组,但你可以数一数,然后在chr()上创建一个循环
$tests=[
[
“name”=>“Cindy”,
“组”=>“A组”
],
[
“name”=>“Carl”,
“组”=>“A组”
],
[
'姓名'=>'安娜',
“组”=>“A组”
],
[
“name”=>“Mary”,
“组”=>“B组”
],
[
“name”=>“John”,
“组”=>“B组”
],
[
“name”=>“Frank”,
“组”=>“C组”
]
];
回声';var_dump($测试);回声';
$variables=[];
foreach($tests作为$test){
$key=str_replace('','',strtolower($test['group']);
$variables[$key][]=$test;
}
提取($变量);
//回声';变量转储(数组键($variables));回声';
回声';var_dump($a组,$b组,$c组);回声';模具();
在您想要的结果中,一个变量将包含元素,其中每个元素都具有相同的组值:这似乎是浪费:只需将该变量命名为组,并仅列出其中的名称即可。与其他变量不同的是,选择一个关联(!)数组,该数组将组名作为键,相应的名称作为值(数组):
我相信这比你想象的更有用、更容易管理
下面是生成它的方法(假设输入变量为$arr
):
$result
将如上所述。您实际上指的是对象还是数组?@UlrikMcArdle好吧,第一个示例是一个对象,我想将其拆分为数组或具有类似输出的对象。一个大数组中包含3个不同的数组,或者每个数组包含一个变量(如您希望的示例所示)?@Mikey对于该示例,可能有3个不同的变量第一个示例是数组,而不是对象。
$tests = [
[
'name' => 'Cindy',
'group' => 'GROUP A'
],
[
'name' => 'Carl',
'group' => 'GROUP A'
],
[
'name' => 'Anna',
'group' => 'GROUP A'
],
[
'name' => 'Mary',
'group' => 'GROUP B'
],
[
'name' => 'John',
'group' => 'GROUP B'
],
[
'name' => 'Frank',
'group' => 'GROUP C'
]
];
echo '<pre>'; var_dump($tests); echo '</pre>';
$variables = [];
foreach($tests as $test){
$key = str_replace(' ', '_', strtolower($test['group']));
$variables[$key][] = $test;
}
extract($variables);
// echo '<pre>'; var_dump(array_keys($variables)); echo '</pre>';
echo '<pre>'; var_dump($group_a, $group_b, $group_c); echo '</pre>'; die();
[
["GROUP A"] => ["Cindy", "Carl", "Anna"],
["GROUP B"] => ["Mary", "John"],
["GROUP C"] => ["Frank"]
]
foreach ($arr as $pair) {
$result[$pair["group"]][] = $pair["name"];
}