从多维数组组织或分组数据


Organize or group data from multidimensional array

我有一个多维数组,我很难根据特定需求对其进行分组和排序。下面是数组:

Array ( 
    [0] => Array ( 
        [0] => Joe Smith 
        [1] => Array ( 
            [0] => 3 
            [1] => 9 
        ) 
    ) 
    [1] => Array ( 
        [0] => John Doe 
        [1] => Array ( 
            [0] => 6 
            [1] => 12 
        ) 
    ) 
    [2] => Array ( 
        [0] => Jack Frost 
        [1] => Array ( 
            [0] => 2 
            [1] => 4 
        ) 
    ) 
)

我想做的是将数字从最小到最短排序(即2、3、4、6、9、12),但也保留与这些数字相关的名称。例如:

2 (Jack Frost),
3 (Joe Smith),
4 (Jack Frost),
6 (John Doe),
9 (Joe Smith),
12 (John Doe)

你知道如何按数字排序并保持名字在一起吗?由于

更新1

以下是我用来按顺序列出数字的PHP代码:
$users = get_users();
$names = array();
$days = array();
foreach( $users as $user ) {
    $names[] = $user->display_name;
    $days[] = $user->member_day;
}
$result = array_map( null, $names, $days );
$mdays = array();
foreach( $days as $d ) {
    foreach( $d as $d2) {
        $mdays[] = $d2;
    }
}
for( $i; $i<=31; $i++ ) {
    if( in_array($i, $mdays) ) {
        echo $i . '<br>';
    }
}

在上面的代码中,$result打印出上面的Array。此外,for循环对"days"进行排序。

最终目标是有31个块,并按编号填写块的名称

你可以这样做

$result = [];
foreach ($arr as $key => $value) {
    foreach ($value[1] as $v) {
        $result[$v] = $value[0];
    }
}
ksort($result);
print_r($result);
输出:

Array
(
    [2] => Jack Frost
    [3] => Joe Smith
    [4] => Jack Frost
    [6] => John Doe
    [9] => Joe Smith
    [12] => John Doe
)

注意:这将正常工作,直到所有数组数组都不包含相同的键

这样应该可以工作,最后您可以对数组

进行排序
$final_array=array();
foreach (array as $arr){
  foreach($arr as $aaa){
    $final_array[]=array($aaa,$arr[0])
  }
}