【问题标题】:Manipulation or modification of array操作或修改数组
【发布时间】:2016-08-26 04:46:27
【问题描述】:

我是 PHP 新手。我正在用 php 做一个我的项目,我对数组函数和所有这些东西都是新手。我已经尝试过但没有成功。让我向您展示我的 sql 查询数组。 我有一个数组,如下所示:

Array
(
    [0] => Array
        (
            [pc_eventDate] => 2016-08-25
            [ufname] => Rutul
            [ulname] => Shah
            [name] =>  Clinic
        )

    [1] => Array
        (
            [pc_eventDate] => 2016-08-26
            [ufname] => Rutul
            [ulname] => Shah
            [name] =>  Clinic
        )

    [2] => Array
        (
            [pc_eventDate] => 2016-08-25
            [ufname] => Administrator
            [ulname] => Administrator
            [name] =>  Clinic
        )

    [3] => Array
        (
            [pc_eventDate] => 2016-08-26
            [ufname] => Administrator
            [ulname] => Administrator
            [name] =>  Clinic
        )

    [4] => Array
        (
            [pc_eventDate] => 2016-08-25
            [ufname] => Administrator
            [ulname] => Administrator
            [name] =>  Clinic
        )

    [5] => Array
        (
            [pc_eventDate] => 2016-08-26
            [ufname] => Amit
            [ulname] => Mahida
            [name] => Cancer Specialist
        )

    [6] => Array
        (
            [pc_eventDate] => 2016-08-26
            [ufname] => Amit
            [ulname] => Mahida
            [name] => Breach Candy Hospital
        )

)

现在我想要我的结果数组如下:

Array
(
    [2016-08-25] => Array
        (
            [ Clinic] => Array
                (
                    [Rutul Shah] => Array
                        (
                            [appointments] => 1
                        )

                    [Administrator Administrator] => Array
                        (
                            [appointments] => 2
                        )

                )

        )

    [2016-08-26] => Array
        (
            [Clinic] => Array
                (
                    [Rutul Shah] => Array
                        (
                            [appointments] => 1
                        )
                    [Administrator Administrator] => Array
                        (
                            [appointments] => 1
                        )

                )
                [Cancer Specialist] => Array
                    (
                        [Amit Mahida] => Array
                            (
                                [appointments] => 1
                            )
                    )
                [Breach Candy Hospital] => Array
                    (
                        [Amit Mahida] => Array
                            (
                                [appointments] => 1
                            )
                    )

        )

)

【问题讨论】:

  • 你在哪个版本的 PHP 上运行?
  • 我的php版本是5.6.14

标签: php arrays sorting multidimensional-array array-merge


【解决方案1】:

您想遍历约会数组并使用其内容生成其他数据结构。让我们将您的第一个数组称为$input,将您的第二个数组称为$output

// initialize output array
$output = [];

// loop through each $appt in the $input array
foreach($input as $appt) {
  // get shorter var names for appt data
  $date = $appt['pc_eventDate'];
  $name = $appt['name'];
  $uname = $appt['ufname'].' '.$appt['ulname'];

  // initialize each level of the data structure if it doesn't already exist
  if(!isset($output[$date])) $output[$date] = [];   
  if(!isset($output[$date][$name])) $output[$date][$name] = [];
  if(!isset($output[$date][$name][$uname])) $output[$date][$name][$uname] = [];
  // initialize the number of appts to 0
  if(!isset($output[$date][$name][$uname]['appointments'])) $output[$date][$name][$uname]['appointments'] = 0;

  // increment the number of appts
  $output[$date][$name][$uname]['appointments']++;
}

重要的是根据旧结构中的数据初始化新结构中的每个子数组——从那里我们只是计算与新数据匹配的约会的数量。

祝你好运!

【讨论】:

    【解决方案2】:

    说数组是问题是$arr

    这将以您想要的方式排列数组作为解决方案

    foreach ($arr as $key => $value) {
        if(!is_array($value['pc_eventDate]))
              $value['pc_eventDate] = [];
        if(!is_array($value['pc_eventDate]['name'])) 
              $value['pc_eventDate]['name'] = []; 
        if(!is_array($value['pc_eventDate']['name']['ufname'.' ulname'])){
              $value['pc_eventDate']['name']['ufname'.' ulname'] = [];
               $value['pc_eventDate']['name']['ufname'.' ulname']['appointments'] = 1;
        }else{
             $value['pc_eventDate']['name']['ufname'.' ulname']['appointments'] += 1;
        }
    }
    

    您需要执行上述操作。 尝试运行上面的代码,可能有一些错字。如果它没有产生您想要的结果,请尝试注释掉 foreach 和 var_dump() 正文中的所有行以测试数组结构的构建。

    谢谢

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多