【问题标题】:Group items from an array if key value are equals in PHP [duplicate]如果 PHP 中的键值相等,则从数组中分组项目 [重复]
【发布时间】:2019-09-06 01:31:50
【问题描述】:

我在 PHP 中有以下多维数组。

对于每个数组(),我有 3 个示例信息。 IRL,我有 20 多个。

Array
(
      [0] => Array
      (
            [date] => 2019-04-23
            [room] => 101
            [rate] => 10
      )
      [1] => Array
      (
            [date] => 2019-04-25
            [room] => 101
            [rate] => 10
      )
      [2] => Array
      (
            [date] => 2019-04-26
            [room] => 101
            [rate] => 10
      )
      [3] => Array
      (
            [date] => 2019-04-25
            [room] => 102
            [rate] => 12
      )
      [4] => Array
      (
            [date] => 2019-04-26
            [room] => 102
            [rate] => 12
      )
)

只有当roomrate 相似时,是否可以对该数组中的数据进行分组?


例如,前一个数组的欲望输出如下:

Array
(
      [0] => Array
      (
            [room] => 101,
            [rate] => 10,
            [dates] => Array
            (
                [0] => 2019-04-23,
                [1] => 2019-04-25,
                [2] => 2019-04-26
            )              
      )
      [2] => Array
      (
            [room] => 102,
            [rate] => 12,
            [dates] => Array
            (
                [0] => 2019-04-25,
                [1] => 2019-04-26
            )
      )
)

【问题讨论】:

  • 您可以连接房间和价格并用作键 - 然后循环数组并分配日期。但这只是我的做法——你试过什么?
  • 你一小时前不是问过同样的问题吗?

标签: php arrays


【解决方案1】:

您可以使用Array.reduce

Sandbox example

代码

<?php

$res  = array_reduce($you_array,function($acc,$val){
        $room = array_search($val['room'],array_column($acc,'room'));
        $rate = array_search($val['rate'],array_column($acc,'rate'));
    if($rate == $room && $room > -1){
        array_push($acc[$room]['date'],$val['date']);
    }else{
        $new_arr=$val;
        $new_arr['date']=[$val['date']];
        array_push($acc,$new_arr);
    }
    return $acc;
},[]);


print_r($res);
?>

【讨论】:

    猜你喜欢
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2016-11-02
    • 2019-05-05
    • 2021-11-07
    • 2019-09-04
    相关资源
    最近更新 更多