Php 创建一个每周数组,每天有多个条目
我有一个MySQL查询,它返回一个类似这样的数据转储(对于这个问题排除的其他列,预期和需要重复): 我尝试为每天创建一个数组,并且只在其中存储一次不同的会话/时间,例如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
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;
}