将数组分组到基于键/值的另一个数组中


Group array into another array on the base of key/value

>我处于我想将 PHP 中的数组分组以根据组 ID 进行分组的情况,我得到的是以下内容

Array ( 
[0] => Array ( 
[raw] => I am text string 
[group_id] => 1 
) 
[1] => Array ( 
[raw] => Another text string 
[group_id] => 1 
) 
[2] => Array ( 
[raw] => text placeholder 
[group_id] => 2 
)
) 

但我想要如下所示的输出

Array ( 
[0] => Array ( 
Array(
[0] => Array (
[raw] => I am text string 
[group_id] => 1 
) 
[1] => Array ( 
[raw] => Another text string 
[group_id] => 1 
) 
)
[1] => Array ( 
[raw] => text placeholder 
[group_id] => 2 
)
) 

在当前输出中,您可以注意到前两个数组元素的"group_id"是相同的,即 1,而在预期的输出中,具有相同"group_id"的元素被包装到父数组中。

供您考虑,这里是数组代码;

<?php    
$output = array(
array ("raw"=> "I am text string", "group_id" => 1), 
array ("raw"=> "Another text string", "group_id" => 1), 
array ("raw"=> "text placeholder", "group_id" => 2), 
);
print_r($output);
?>

因此,最终,我想将具有相同"group_id"的数组分组到另一个数组中。

提前感谢您的时间和帮助。

任何帮助都值得赞赏,因为我不明白逻辑。

我认为没有修剪单个/单独组 ID 的嵌套尺寸的快捷方式,但您可以执行以下操作:

$output = array(
    array ("raw"=> "I am text string", "group_id" => 1),
    array ("raw"=> "Another text string", "group_id" => 1),
    array ("raw"=> "text placeholder", "group_id" => 2),
);
$new = array();
foreach ($output as $value) {
    $new[$value['group_id']][] = $value;
}
// trim single/lone arrays
foreach ($new as &$value) {
    if(count($value) <= 1) {
        $value = reset($value);
    }
}
echo '<pre>';
print_r($new);
$newArr = array();
foreach($output as $values) {
    $new[$values['group_id']][] =  $values;
}

它将为您创建数组。

使用以下代码:

<?php    
$output = array(
array ("raw"=> "I am text string", "group_id" => 1), 
array ("raw"=> "Another text string", "group_id" => 1), 
array ("raw"=> "text placeholder", "group_id" => 2), 
);
$new = array();
foreach($output as $values) {
    $new[$values['group_id']][] =  $values;
}
$new = array_values($new);
echo '<pre>';
print_r($new);
?>