im learning some oop by watching some carts tutorials and im finding two different behaviors over what i think is the same thing, and i cant understand why: 1- the while stamennt should iterate while the condition its TRUE, but i see code only iterating accordingly to the length of an array provided as argument (which doesn’t make sense for me, but it does): here is the example:
while ($row = mysqli_fetch_assoc($result)){
echo '<pre>'; print_r($row); echo '</pre>';
// component($row['product_name'], $row['product_price'], $row['product_image'], $row['id']);
}
in the above case it only iterates 4 times cause that’s the length of the array.
but then i tried to replicate this to check it out
<?php
$test = ["nro1" =>1 , "nro2" => 2];
while ($test){
print_r($test);
}
and its iterating forever, (that makes sense cause the array its always TRUE, independently from its length )
can someone shed some light on this for me please? thank you!
Advertisement
Answer
First case is not an array but a mysqli_result
object. As the function is being called, it moves the internal pointer of the mysqli_result
until it returns false. Second case you just loop the same variable, which will always evaluate to true
. You can “emulate” the behavior with something like:
<?php
$test = ["nro1" =>1 , "nro2" => 2];
while ($item = current($test)) {
print_r($item);
next($test);
}
or better yet:
<?php
$test = [1,2,3];
while ($item = current($test)) {
echo $item;
next($test);
}