基于公共值对PHP数组重新排序

基于公共值对PHP数组重新排序,php,arrays,sorting,Php,Arrays,Sorting,我唯一关心的是尺寸。我需要进入一个新的数组级别并添加它,将它们分组在一起 我基本上需要将它们全部分组到它们自己的数组中,这样我就可以遍历它们并执行其他操作 当前阵列: [0] => Array ( [name] => random name 2 [sizes] => ["XS","S","M","L","XL","XXL&q

我唯一关心的是尺寸。我需要进入一个新的数组级别并添加它,将它们分组在一起

我基本上需要将它们全部分组到它们自己的数组中,这样我就可以遍历它们并执行其他操作

当前阵列:

[0] => Array 
    (
         [name] => random name 2
         [sizes] => ["XS","S","M","L","XL","XXL"]
    )
[1] => Array
    (
         [name] => random name 1
         [sizes] => One Size
    )
[2] => Array
    (
         [name] => random name 3
         [sizes] => ["XS","S","M","L","XL","XXL"]
    )
通缉:

[0] => Array 
    (
         [0] => Array
            (
                 [name] => random name 1
                 [sizes] => One Size
            )
    )
[1] => Array
    (
         [0] => Array
            (
                [name] => random name 2
                [sizes] => ["XS","S","M","L","XL","XXL"]
            )
         [1] => Array
            (
                [name] => random name 3
                [sizes] => ["XS","S","M","L","XL","XXL"]
            )
    )

循环数组并创建一个新数组,该数组的大小现在作为键。
稍后使用数组_值删除关联键

foreach($arr as $item){
    $new[$item['sizes']][] = $item;
}
$new = array_values($new); // remove associative

为什么3先于2?你试过什么?如果产品4的尺寸范围是S->L,会发生什么?3是随机的,忽略它,我现在就改变。如果它的大小范围是S->L,那么我希望它的分组与上面两个完全相同,在[2]=>Array()@grumpycrudon中,我不确定我是否理解你的意思。上面示例中的键是字符串“size”。是的,它看起来确实像一个数组,但如果它是一个数组,print\r就不会这样打印它。是的。。如果没有打印,r会将其写为[sizes]=>array(……但它没有。并不是说其他字符串都没有包含在
中,但它们仍然是字符串。