帮助显示类中的数组

时间:2011-06-08 11:47:13

标签: php arrays prepared-statement

我知道这不是最好的方式或正确方法,但可以使用解释为什么这不起作用。如果我不把它放在一个类中,相同的代码可以工作。 test.php显示了显示数组但我无法显示数组。非常感谢一个很好的例子。

<?php

class Photo 
{
public $id;
public $categories;
public $img_name;
public $myArray = array();

public function findAll()
{
    $dbConnection = mysqli_connect("localhost", "root", "root", "gallery");
    $query = "SELECT * FROM images";
    $stmt = mysqli_prepare($dbConnection,$query);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $id, $categories,$img_name);
    while(mysqli_fetch($stmt)) {
         array_push($this->myArray,$id);
      }
     return $this->myArray;
}
}
?>

test.php的

<?php
require_once ('photo.php');

$obj = new Photo();
$obj->findAll();

echo "<pre>";
var_dump($obj);
echo "</pre>";

foreach ($obj as $val) {
echo "$val <br/>";
}
?>

当我运行页面时,我得到了

object(Photo)#1 (4) {
["id"]=>
 NULL
["categories"]=>
 NULL
["img_name"]=>
 NULL
["myArray"]=>
 array(10) {
[0]=>
int(447)
[1]=>
int(448)
[2]=>
int(449)
[3]=>
int(439)
[4]=>
int(440)
[5]=>
int(435)
[6]=>
int(431)
[7]=>
int(432)
[8]=>
int(433)
[9]=>
int(434)
}
}



Array 

4 个答案:

答案 0 :(得分:1)

你是var_dumping对象,而不是数组。

这将有效:

require_once ('photo.php');

$obj = new Photo();

foreach ($obj->findAll() as $val) {
   echo "$val <br/>";
}

或者确实:

$items = $obj->findAll();
foreach($items as $val)
{
  echo $val . '<br />';
}

答案 1 :(得分:0)

在test.php中

你没有犯错误。您没有指定$obj->findAll();的值 像这样改变test.php

<?php
require_once ('photo.php');

$obj = new Photo();
$array=$obj->findAll();

echo "<pre>";
var_dump($array);   
 echo "</pre>";

foreach ($array as $val) {
echo "$val <br/>";
}
?>

答案 2 :(得分:0)

替换

foreach ($obj as $val) {

通过

foreach ($obj->myArray as $val) {

foreach ($obj->findAll() as $val) {

答案 3 :(得分:0)

您正在尝试迭代一个对象,如php manual中所述。

这样你遍历对象中的每个属性,因此$ val按顺序获取$ id,$ categories,$ img_name和$ myArray的值。你的echo语句会出现3个换行符(因为前3个属性为null,字符串上下文中的null转换为空字符串)和“Array”字后跟换行符(因为这是将数组转换为字符串的方式)上下文)。

您可能想要遍历数组本身,然后使用任何其他答案。