Как добавить две переменные в функцию, чтобы каждый раз одна из них была рабочей?

#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);`