【问题标题】:Reorder PHP array based on a common value根据公共值重新排序 PHP 数组
【发布时间】:2020-07-24 15:44:42
【问题描述】:

我在这里唯一关心的是尺寸。我需要打破一个新级别的数组并将其添加进去,将它们组合在一起。

我基本上需要将它们全部分组到自己的数组中,这样我就可以遍历它们并做其他事情。

当前数组:

[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"]
            )
    )

【问题讨论】:

  • 为什么3在2之前?你尝试过什么?
  • 如果产品 4 的尺寸范围为 S -> L 会怎样?
  • 3 是随机的,忽略它,现在要改变了。如果它的大小范围为 S -> L,那么我不希望它像上面两个一样分组,在 [2] => Array()

标签: php arrays sorting


【解决方案1】:

循环数组并创建一个新数组,现在以大小为键。
稍后我们使用 array_values 删除关联键。

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

【讨论】:

  • @GrumpyCrouton 不确定我明白你的意思。上面示例中的键是字符串“sizes”。是的,它看起来确实像一个数组,但如果它是一个数组,print_r 就不会那样打印它。
  • Yes.. 如果不是 print_r 会写成 [sizes] => array( ...... 但事实并非如此。并不是说其他​​字符串都没有用" 但它们仍然是字符串。
猜你喜欢
  • 2020-06-17
  • 2013-11-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 2016-11-18
相关资源
最近更新 更多