我认为这段代码是用来排序事件如下给我一个问题。它触发的错误是:
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 3 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
Notice: Undefined offset: 3 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 895
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 4 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
Notice: Undefined offset: 4 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 895
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 5 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
Notice: Undefined offset: 5 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 895
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 6 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
Notice: Undefined offset: 6 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 895
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 7 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
Notice: Undefined offset: 7 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 895
Notice: Undefined variable: combined in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 941
Notice: Undefined offset: 8 in /services10/webpages/c/m/cms.norlink.ca/public/admin/new_events.php on line 893
代码如下:
function sortevents($days_events)
{
if (!is_array($days_events))
{
return array();
}
if (0 === ($ec=count($days_events)))
{
return array();
}
$neworder = array();
$oldorder_used = array();
$allordered = false;
for ($i = 0; $i <= $ec; $i++)
{
$oldorder_used[$i] = false;
}
$i = 0;
$sd = null;
$si = -1;
$ei = 0;
while (!$allordered)
{
if ((null == $sd || $sd > $days_events[$i]['startint']) && !$oldorder_used[$i])
{
$sd = $days_events[$i]['startint'];
$si = $i;
}
else
{
$i++;
continue;
}
if ($i === ($ec-1))
{
$oldorder_used[$si] = true;
$neworder[$ei] = $days_events[$si];
$ei++;
$i = 0;
}
$i++;
$allordered = combinebooleans($oldorder_used);
}
}
//takes an array of booleans and combines them
function combinebooleans($arr_bools)
{
//if not an array of booleans
if (!is_array($arr_bools))
{
//if not a boolean
if (!is_bool($arr_bools))
{
return false;
}
//if it is a boolean then lets return it
else
{
return $arr_bools;
}
}
else
{
//variable to hold combined booleans
$combined;
//cycle through the array of booleans and
foreach ($arr_bools as $curb)
{
$combined = $combined | $curb;
}
return $combined;
}
}
如果您将events
存储在SQL DATABASE中,最好的排序方法是使用ORDER BY
如果你必须在php上排序,你可能可以使用usort
:
usort($array,function($eventA,$eventB)){
//your own logic *
return $comparisonResult;
});
*这个函数应该返回
- -1或其他小于0的值如果$eventA应该在$eventB之前
- 1或其他小于0的值如果$eventA应该在$eventB之后
- 0聪明过分的