1. Не вижу необходимости помещать свойство объекта/класса в дополнительную переменную. Вместо:
$st = $item->timestamp;
if(time() < $st){
достаточно:
if( time() < $item->timestamp ) {
2. В PHP
exit - это конструкт, и если в него не передается параметр, скобки необязательны (принято не указывать их): вместо
exit();
достаточно
exit;
3. Для выхода из цикла необходимо использовать
break. Разница в том, что exit прекращает выполнение скрипта вообще, break - только выходит из цикла, прекращая дальнейшие итерации:
if( time() < $item->timestamp ) {
break;
}
4. Возможно, вам вообще нужно просто прекратить логику в текущей итерации и перейти к следующей итерации (скипнуть текущий элемент в итерации) - для этого есть
continue:
if( time() < $item->timestamp ) {
continue;
}
// тут остальная логика в итерации цикла,
// при выполнении условия и вызове continue; эта логика для текущей итерации не будет выполнена,
// произойдет переход к следующей итерации цикла
...
5. Уточните, вам таки из цикла выйти надо (перестать проверять данные в следующих итерациях), или же прекратить выполнение всего скрипта?
6. Что касается "почему такая конструкция не работает":
– ваш дамп, это значения $item->timestamp?
– вы уверены что условие проверки верное, в вашем коде текущий unix timestamp должен быть
меньше $item->timestamp, то есть последний должен содержать timestamp
в будущем. Рискну предположить, что на самом деле вам необходимо:
if( $item->timestamp < time() ) {
continue;
}