svrdoljak
svrdoljak

Reputation: 158

Retrieve data with foreach from return array function

I'm having troubles with my function and how to retrieve the data. Here is what i got.

public function getImages()
{
    $array = array();

    //Test query
    $query = $this->connect()->query("SELECT * from user");
    while ($row = $query->fetch()) {
        $array[] = $row;
        return $array;
    }
}

Now I'm calling this function but i can not use foreach to access the array.

include "header.html";
include "autoload.php";
spl_autoload_register('my_autoloader');

$users = new User;
$users->getImages();

foreach ($users as $value) {
  echo $value["username"];
}

What am I doing wrong? I'm only getting one result but there are many in my database. Or if i call the $array in foreach it says undefined.

Upvotes: 0

Views: 188

Answers (2)

Prakhar
Prakhar

Reputation: 21

You just need to put the return statement out of the while loop.

public function getImages() { 
      $array = array(); //Test query
      $query = $this->connect()->query("SELECT * from user"); 
       while ($row = $query->fetch()) { 
            $array[] = $row; 
        }
        return $array;
  }

Upvotes: 1

David
David

Reputation: 219127

A couple things. First, your function is only ever returning an array with one element in it. If you want to finish populating the array, don't return until after the loop:

while ($row = $query->fetch()) {
    $array[] = $row;
}
return $array;

And second, you're trying to iterate over the object which has the function, not the value returned from the function. Get the return value and iterate over that:

$userDAO = new User;
$users = $userDAO->getImages();

foreach ($users as $value) {
    echo $value["username"];
}

Upvotes: 1

Related Questions