Php 创建一个每周数组,每天有多个条目

Php 创建一个每周数组,每天有多个条目,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我有一个MySQL查询,它返回一个类似这样的数据转储(对于这个问题排除的其他列,预期和需要重复): 我尝试为每天创建一个数组,并且只在其中存储一次不同的会话/时间,例如 Sunday => Array ( [SessionID] => 1 [SessionDetails] => 1:00 PM [Description] => Foo ) Monday=> Array ( [SessionID] => 2

我有一个MySQL查询,它返回一个类似这样的数据转储(对于这个问题排除的其他列,预期和需要重复):

我尝试为每天创建一个数组,并且只在其中存储一次不同的会话/时间,例如

Sunday => Array (
       [SessionID] => 1
       [SessionDetails] => 1:00 PM
       [Description] => Foo
)
Monday=> Array (
       [SessionID] => 2
       [SessionDetails] => 10:00 AM
       [Description] => Foo
       [SessionID] => 3
       [SessionDetails] => 7:00 PM
       [Description] => Bar
)
在我的
foreach($sqlresults as$row)
循环之前,我每天都要设置一个空白数组,比如
$sunday=array()$星期一=数组()

然后在循环中我正在做:

      if (!in_array($row['SessionID'],$sunday)){
          $sunday[]=array($row['SessionID'],$row['Description'], $row['SessionDetails']);
}
它可以正常工作,但它没有正确检查if(!in_array)部分,而是将每个(重复的)SessionID添加为一个新数组,例如

print\r($sunday)

等等

在添加到数组之前,我尝试检查数组中的sessionID:

if (!in_array($row['SessionID'][],$sunday)){
但是“致命错误:无法使用[]进行读取”

所以我试着:

  if (!in_array($sunday[$row['SessionID']],$sunday)){
但是“注意:未定义的偏移量:1”

我尝试将其设置为关联值:

      if (!in_array($row['SessionID'],$sunday)){
  $sunday[]=array("SessionID"=>($row['SessionID']),"Description"=>($row['Description']), "Time"=>($row['SessionDetails']));
}
同样的问题,只是数组更容易读取:

[0] => Array
    (
        [SessionID] => 1
        [Description] => Foo
        [Time] => 1 PM
    )
[1] => Array
    (
        [SessionID] => 1
        [Description] => Foo
        [Time] => 1 PM
    )

TLDR:在尝试添加到day数组之前,如何让它检查索引[SessionID]?

这里有一个简单的方法,可以使用

您可以运行代码

      if (!in_array($row['SessionID'],$sunday)){
  $sunday[]=array("SessionID"=>($row['SessionID']),"Description"=>($row['Description']), "Time"=>($row['SessionDetails']));
}
[0] => Array
    (
        [SessionID] => 1
        [Description] => Foo
        [Time] => 1 PM
    )
[1] => Array
    (
        [SessionID] => 1
        [Description] => Foo
        [Time] => 1 PM
    )
$result = [];

foreach (array_unique($rows, SORT_REGULAR) as $row) {
    $result[$row['DayofWeek']][] = $row;
}