在PHP类中使用数组

在PHP类中使用数组,php,arrays,class,Php,Arrays,Class,我第一次尝试使用类和对象,我想我应该为一个可以存储书籍之类的东西的盒子制作一个模板。(从现实世界项目的角度思考) 我得到一个错误,它不是数组或其他东西 有人能给我指一下正确的方向吗 通常这个类是一个单独的文件,但我只是在这里学习。调用$BookBox->getThings()时调用的实际上是一个对象而不是数组 您可以尝试以下方法: $books = $BookBox->GetThings(); echo $books[2]; 调用$BookBox->getThings()时调用的实际上是

我第一次尝试使用类和对象,我想我应该为一个可以存储书籍之类的东西的盒子制作一个模板。(从现实世界项目的角度思考)

我得到一个错误,它不是数组或其他东西

有人能给我指一下正确的方向吗


通常这个类是一个单独的文件,但我只是在这里学习。

调用$BookBox->getThings()时调用的实际上是一个对象而不是数组

您可以尝试以下方法:

$books = $BookBox->GetThings();
echo $books[2];

调用$BookBox->getThings()时调用的实际上是一个对象,而不是数组

您可以尝试以下方法:

$books = $BookBox->GetThings();
echo $books[2];

您使用的是什么版本的PHP

仅在PHP5.4中添加了数组解引用(引用到返回的数组中)

如果您使用的是以前的版本,则必须执行以下操作:

$books = $BookBox->getThings();
echo $books[2];
编辑

由于您正在将书籍推入一个框中,
$Books[2]
将返回书籍对象的一个实例。Echo用于输出字符串,因此出现错误

您可以回显书本的特定属性,也可以通过执行以下操作打印出所有属性:

print_r($books[2]);

您使用的是什么版本的PHP

仅在PHP5.4中添加了数组解引用(引用到返回的数组中)

如果您使用的是以前的版本,则必须执行以下操作:

$books = $BookBox->getThings();
echo $books[2];
编辑

由于您正在将书籍推入一个框中,
$Books[2]
将返回书籍对象的一个实例。Echo用于输出字符串,因此出现错误

您可以回显书本的特定属性,也可以通过执行以下操作打印出所有属性:

print_r($books[2]);

首先,您不能执行
echo
,因为您将得到的不是字符串而是对象。改用
print\u r()
var\u dump()

第二,就像这里的其他答案一样,你应该这样做

$books = $BookBox->getThings();
print_r($books[2]);
但是我建议您使用
getThings()
接受一个变量来获取指定的数组元素:

function getThings($key = null) {
  if ($key) {
    return isset($this->storedArray[$key]) ? $this->storedArray[$key] : null;
  } else {
    return $this->storedArray;
  }
}

// Then you can do this
// print_r($BookBox->getThings(2));

首先,您不能执行
echo
,因为您将得到的不是字符串而是对象。改用
print\u r()
var\u dump()

第二,就像这里的其他答案一样,你应该这样做

$books = $BookBox->getThings();
print_r($books[2]);
但是我建议您使用
getThings()
接受一个变量来获取指定的数组元素:

function getThings($key = null) {
  if ($key) {
    return isset($this->storedArray[$key]) ? $this->storedArray[$key] : null;
  } else {
    return $this->storedArray;
  }
}

// Then you can do this
// print_r($BookBox->getThings(2));

我的版本是5.3.10。那么你是说如果是5.4,我的代码会工作吗?@user1159454:是的,没错。但是,我不建议使用任何PHP5.4独有的功能,因为webhosts在一段时间内不会推出它。好吧,我仍然会遇到一个错误。可捕获的致命错误:无法将类Book的对象转换为stringMy版本为5.3.10。那么你是说如果是5.4,我的代码会工作吗?@user1159454:是的,没错。但是,我不建议使用任何PHP5.4独有的功能,因为webhosts在一段时间内不会推出它。好吧,我仍然会遇到一个错误。可捕获的致命错误:无法将类Book的对象转换为字符串