【问题标题】:convert one dimensional array to multidimesional [duplicate]将一维数组转换为多维[重复]
【发布时间】:2017-09-27 11:55:30
【问题描述】:

您好,我有以下数组列表,我需要将其转换为以下内容,按公司分组并将类别显示为第二个数组。

 [0] => Array
  (
    [company_id] => 1
    [avatar] => '092EF7DB-B478-2EF5-1CC5-4A46D285B5F0.jpg'
    [comp_name] => Hotel 1
    [categories] => Array
    (
      [cat_+category_id] => Reception
      [cat_+category_id] => Accommodation
    )

[1] => Array
      (
        [company_id] => 8
        [avatar] => ''
        [comp_name] => Hotel 2
        [categories] => Array
        (
          [cat_+category_id] => Reception

        )
etc 

下面的原始数组

0 => {#359 ▼
  +"category_id": 10
  +"company_id": 1
  +"cat": "Reception"
  +"comp_name": "Hotel 1"
  +"avatar": "092EF7DB-B478-2EF5-1CC5-4A46D285B5F0.jpg"
}
1 => {#354 ▼
  +"category_id": 12
  +"company_id": 1
  +"cat": "Accomodation"
  +"comp_name": "Hotel 1"
  +"avatar": "092EF7DB-B478-2EF5-1CC5-4A46D285B5F0.jpg"
}
2 => {#358 ▼
  +"category_id": 10
  +"company_id": 8
  +"cat": "Reception"
  +"comp_name": "Hotel 2"
  +"avatar": null
}
3 => {#361 ▼
  +"category_id": 10
  +"company_id": 23
  +"cat": "Reception"
  +"comp_name": "Hotel 3"
  +"avatar": null
}
4 => {#365 ▼
  +"category_id": 12
  +"company_id": 23
  +"cat": "Accomodation"
  +"comp_name": "Hotel 3"
  +"avatar": null

能否请您告知如何在 php 中实现它 谢谢 丹妮

【问题讨论】:

  • 你想按company_name对数组进行排序吗?
  • 将您的原始数组分享给sandbox.onlinephpfunctions.com(或类似的)以获得快速帮助
  • 这里是沙箱中的代码sandbox.onlinephpfunctions.com/code/…
  • 嗨,Petro,我已经尝试过 foreach($results as $company) { $arr[] = ['cat' => $company->name ]; $data[$company->company_id] = [ 'comp_name' => $company->comp_name, 'avatar' => $company->avatar, $arr]; } 但这不起作用

标签: php mysql arrays


【解决方案1】:

假设$originalArr 是您原来的一维数组,解决方案将您的一维数组转换为多维数组如下:

$resultArr = array();
foreach($originalArr as $arr){
    if(!isset($resultArr[$arr['company_id']])){
        $resultArr[$arr['company_id']] = array('company_id' => $arr['company_id'], 
                                            'avatar' => $arr['avatar'],
                                            'comp_name' => $arr['comp_name'],
                                            'categories' => array('cat_' . $arr['category_id'] => $arr['cat'])
                                        );
    }else{
        $resultArr[$arr['company_id']]['categories']['cat_' . $arr['category_id']] = $arr['cat'];
    }
}
$resultArr = array_values($resultArr);

// display $resultArr array
var_dump($resultArr);

【讨论】:

  • 太棒了,这完全符合我的需要
  • @user1859876 很高兴我能帮上忙。干杯! :-)
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2014-04-23
  • 2019-03-20
  • 2023-03-26
  • 2019-06-29
相关资源
最近更新 更多