php is server side scripting language. that means it returns whole page generated as an HTML page. you can't print or echo values using loops. so the loop will display all values rather than displaying one by one.
for that you have to display time at regular interval. there are two way to do that client-side and server-side which is as below,
Server-side Get Time method
<html>
<body>
<div id="timeNow" >
</div>
<script>
var d = new Date(<?php date_default_timezone_set('UTC'); echo strtotime('now')*1000 ?>);
(function foo(){
d.setTime(d.getTime()+1000);
var clientTime = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + " " + (d.getHours() >= 12 ? 'pm' : 'am');
//alert(clientTime);
document.getElementById("timeNow").innerHTML = clientTime;
setTimeout(foo, 1000); // refresh time every 1 second
})();
</script>
</body>
</html>
Client-side Get Time method :
<html>
<body>
<div id="timeNow" >
</div>
<script>
(function foo(){
var d = new Date();
var hours = d.getHours()*12;
var clientTime = (hours ? hours : 12) + ":" + d.getMinutes() + ":" + d.getSeconds() + " " + (hours >= 12 ? 'pm' : 'am');
//alert(clientTime);
document.getElementById("timeNow").innerHTML = clientTime;
setTimeout(foo, 1000); // refresh time every 1 second
})();
</script>
</body>
</html>