#php
#php
Вопрос:
С помощью следующей функции я сортирую сообщения RSS по возрастанию.
usort($posts, 'mysort');
function mysort($x, $y) {
return strtotime($y->pubDate) - strtotime($x->pubDate);
}
Однако некоторые из этих каналов имеют вместо тега pubDate (для даты) тег с именем published .
Все каналы сохраняются в одном массиве. Мой вопрос в том, как удовлетворить обе, используя мою функцию или другую функцию? Что-то вроде этого:
return strtotime($y->pubDate OR $y->published) - strtotime($x->pubDate OR $x->published);
Комментарии:
1. Пожалуйста, объясните — полными предложениями, написанными на правильном английском языке — что должна делать эта функция.
2. Просто проверьте свои входные данные и соответствующим образом измените свои выходные данные (в расплывчатом псевдокоде):
if($x is a pubdate tag and $y is a pubdate tag){return strtotime($y->pubDate) - strtotime($x->pubDate);}else if($x is not a pubdate tag and $y is not a pubdate tag){//do whatever you want here}
, и т. Д. И т. Д…
Ответ №1:
Ваш вопрос не совсем ясен, но это то, что вы что?
return strtotime(($y->pubDate)?$y->pubDate:$y->published) -
strtotime(($x->pubDate)?$x->pubDate:$x->published);
По сути, я использую троичный оператор IF, который можно прочитать следующим образом: (if condition)?then do this:else do this;
Помогает ли это?
Редактировать
Небольшое редактирование, основанное на вашем вопросе о повторении значения:
Ответ зависит от того, какой атрибут имеет приоритет над другим .. например, если pubDate важнее, чем published, тогда вы бы написали что-то вроде:
echo ($x->pubDate)?$x->pubDate:$x->published;
А если бы все было наоборот:
echo ($x->published)?$x->published:$x->pubDate;
(изменение $ x для любого вашего объекта, вызываемого, конечно ..)
Помогает ли это?
Комментарии:
1. Если это поможет, я обновил свой вопрос для лучшего понимания.
2. Я думаю, что мой ответ все еще применим, если атрибут pubDate доступен, он будет использовать это в противном случае, он будет использовать атрибут published .
3. Я проверяю это сейчас. Еще одна вещь, хотя, как мне повторить значение? Я имею в виду, как узнать, должен ли я повторять публикацию или публикацию
4. @mtopia Отредактировал исходный ответ, чтобы дать лучший ответ на ваш последний вопрос.
Ответ №2:
Вы можете использовать объект Date и получить разницу.
`$a = новая дата-время ($StartDate);` `$b = новая дата-время ("сейчас");` `return $b-> diff($a);`