Я пробовал несколько способов с операторами switch или foreach. Моя проблема - просто добавить одну вещь из следующего месяца. Я могу добавить все, что хочу, за 1 месяц, но как только наступит следующий месяц, я хочу только один пост, я не могу этого сделать.
Итак, я переключу формат метки времени, чтобы просто отображать месяцы, такие как 01, 02 и т. Д. с
date('m', strtotime($value[0]->created_time)
Затем я запускаю json через foreach, глядя на месяц, в который я хочу добавлять только одно сообщение из каждого месяца. Я просто не знаю, как получать только один предмет из каждого месяца.
это часть класса, это вроде того, что у меня получилось.
$post_dec = json_decode($this->post_data, true);
$i =0;
foreach ($post_dec->data->posts as $postInfo) {
$this->postdate = date('m', strtotime($postInfo->created_time));
echo "post date:" . $this->postdate . "<br>";
switch ($this->postdate) {
case '01':
$this->addMonth($postInfo, $i);
break;
case '02':
$this->addMonth($postInfo, $i);
break;
case '03':
$this->addMonth($postInfo, $i);
break;
case '04':
$this->addMonth($postInfo, $i);
break;
case '05':
$this->addMonth($postInfo, $i);
break;
case '06':
$this->addMonth($postInfo, $i);
break;
case '07':
$this->addMonth($postInfo, $i);
break;
case '08':
$this->addMonth($postInfo, $i);
break;
case '09':
$this->addMonth($postInfo, $i);
break;
case '10':
$this->addMonth($postInfo, $i);
break;
case '11':
$this->addMonth($postInfo, $i);
break;
case '12':
$this->addMonth($postInfo, $i);
break;
default:
break;
}enter code here
И код addmonth выглядит так это
public function addmonth($postInfo, $i)
{
$LMarr = array(
array(
$postInfo
)
);
if ($i == 0) {
$this->longestByMonth = $LMarr;
} else {
array_push($this->longestByMonth, $LMarr);
}
}