У меня есть .php, что извлекать поля из моей базы данных Joomla, а затем эхо их с помощью функции Еогеасп:Сортировка по дате Еогеасп дают предупреждение: usort() ожидает параметр 1, чтобы быть массивом, нуль приведены в
<?php
$jquery1 = "SELECT `fulltext`,alias,metakey,publish_up,metadesc FROM xxx_content WHERE catid=22 AND state= '1'";
$jdb1->setQuery($jquery1);
$jfeed1= $jdb1->loadObjectList();
foreach ($jfeed1 as $jitem1):
?>
<li>
<div>
<?php
$oldLocale = setlocale(LC_TIME, 'en_US');
echo strftime("%a %d %b %Y", strtotime($jitem1->publish_up));
setlocale(LC_TIME, $oldLocale);
?>
</div>
<div><?php echo $jitem1->fulltext; ?></div>
</li>
<?php endforeach; ?>
Однако я хотел бы, чтобы отсортировать функции Еогеасп по дате, я попробовал два разных способа сделать это (на основе других вопросов, SE), но каждый раз, когда я получаю это предупреждение:
Warning: usort() expects parameter 1 to be array, null given in...
Вот моя первая попытка:
$jfeed1= $jdb1->loadObjectList();
function date_compare($a, $b)
{
$t1 = strtotime($a['publish_up']);
$t2 = strtotime($a['publish_up']);
return $t1 - $t2;
}
usort($jitem1, 'date_compare');
foreach ($jfeed1 as $jitem1):
И здесь была моя вторая попытка:
$jfeed1= $jdb1->loadObjectList();
usort($jfeed1->publish_up, function($a, $b) {
$date1 = DateTime::createFromFormat('Y-m-d H:i:s', $a);
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', $b);
return $date1 > $date2;
});
foreach ($jfeed1 as $jitem1):
я «узнал» PHP, просто посмотрев на коды и Tuto, поэтому я пропускаю много fondamental понятий, поэтому я не понимаю, что Я должен сделать это, чтобы решить это предупреждение. Спасибо за вашу помощь!
EDIT 1: Функция
<?php
var_dump($jfeed1)
?>
дает мне для первого элемента:
array(22) { [0]=> object(stdClass)#318 (5) { ["fulltext"]=> string(212) "Yesterday ..." ["alias"]=> string(3) "237" ["metakey"]=> string(7) "Romania" ["publish_up"]=> string(19) "2011-11-15 09:06:39" }
EDIT 2
$jfeed1= $jdb1->loadObjectList();
function date_compare($a, $b)
{
$t1 = strtotime($a['publish_up']);
$t2 = strtotime($b['publish_up']);
return $t1 - $t2;
}
usort($jfeed1, 'date_compare');
foreach ($jfeed1 as $jitem1):
вход в этой функции не является массивом, но NULL (= ничего). Ваша переменная не имеет значения. Возможно, опечатка функции/метода ничего не возвращает. – Martijn
Каково содержимое '$ jfeed1' после вызова' loadObjectList() '? – Sugar
@ ClémentMalet. Ну, я не знаю. Я ищу $ jfeed1 в моем .php, и все они находятся в коде выше. Я загрузил свой полный .php здесь http://www.docspal.com/viewer?id=twgcbiyc-6316723. Большое спасибо за вашу помощь! – Enora