Ребят помогите! Не могу понять почему не срабатывает второй foreach, весь гугл перерыл) PHP: <?php $host = '127.0.0.1'; $db = 'cmr'; $user = 'root'; $pass = ''; $charset = 'utf8'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $pdo = new PDO($dsn, $user, $pass); $stmt = $pdo->query('SELECT * FROM calendar'); /*Определяем время*/ $dt = date("Y-m-d"); $date = date( "d.m"); $tomorrow = date( "d.m", strtotime( "$dt +1 day" ) ); echo 'Сегодня:<br>'; foreach ($stmt as $value){ if($value['date'] == $date){ echo $value['date'].' '.$value['event'].'<br>'; } } echo 'Завтра:<br>'; foreach ($stmt as $value){ if($value['date'] == $tommorow){ echo $value['date'].' '.$value['event'].'<br>'; } }
если второй раз продублировать блок "Сегодня" который отрабатывает без проблем то второй раз он уже не срабатывает. Код (Text): echo 'Сегодня:<br>'; foreach ($stmt as $value){ if($value['date'] == $date){ echo $value['date'].' '.$value['event'].'<br>'; } } echo 'Сегодня:<br>'; foreach ($stmt as $value){ if($value['date'] == $date){ echo $value['date'].' '.$value['event'].'<br>'; } }
Может ты просто Нео? Ну пиши тогда так. PHP: $a1 = ''; $a2 = ''; foreach ($stmt as $value){ if($value['date'] == $date){ $a1 .= $value['date'].' '.$value['event'].'<br>'; } if($value['date'] == $toMMMMorow){ $a2 .= $value['date'].' '.$value['event'].'<br>'; } } echo 'Сегодня:<br>'.$a1.'Завтра:<br>'.$a2;
Спасибо! Так работает) --- Добавлено --- А почему не срабатывал foreach второй раз, уже просто интересно.
@lVlist, однако, потому, что $stmt - вовсе не массив, а объект класса PDOStatement А в цикле foreach выполняется всё тот-же fetch И если для mysqli, например, есть data_seek, то для PDO придётся использовать метод fetchAll, возвращающий массив, который можно вдоль и поперёк обходить сколько угодно раз.