PHP 输出构造函数数组



我尝试执行下面的代码从数组中输出每个值,最终结果显示:

Notice: Array to string conversion in C:xampphtdocstesttutor.php on line 22
_data : Array

.PHP

<?php
class CateData 
{
private $_data = array();
public function __construct($data){
$this->_data = $data;
}
}
$data = array(
'a'=>'Cate1',
'b'=>'Cate2',
'c'=>'Cate3',
'd'=>'Cate4'
);
$cate = new CateData($data);
foreach($cate as $key => $val){
echo $key." : ". $val;
}
?>

我该如何解决这个问题?

您循环访问的是类对象,而不是实际数据。

在您的班级中添加:

public function getData(){
return $this->_data;
}

然后更改:

foreach($cate as $key => $val){
echo $key." : ". $val;
}

自:

foreach($cate->getData() as $key => $val){
echo $key." : ". $val;
}

虽然接受的答案更好,但另一种方法是更改范围,这样就不需要添加 getData(( 方法。但随后可以直接访问类变量。

将变量更改为 public,并循环$cate->_data

class CateData 
{
public $_data = array();
public function __construct($data){
$this->_data = $data;
}
}
$data = array(
'a'=>'Cate1',
'b'=>'Cate2',
'c'=>'Cate3',
'd'=>'Cate4'
);
$cate = new CateData($data);

foreach($cate->_data as $key => $val){
echo $key." : ". $val;
}

首先,您应该清除publicprotectprivate之间的差异。

在您的代码中,您应该将_data更改为公共,因为您想在课堂之外访问。

然后更改:

foreach($cate as $key => $val){
echo $key." : ". $val;
}

自:

foreach($cate->_data as $key => $val){
echo $key." : ". $val;
}

最新更新