如何访问类对象内的数组值?
Posted
技术标签:
【中文标题】如何访问类对象内的数组值?【英文标题】:How to access array values inside class object? 【发布时间】:2011-11-04 00:52:15 【问题描述】:我在函数中有一个这样的数组:
$value = array("name"=>"test", "age"=>"00");
我在 abc 类中公开了这个 $value。
现在在我的另一个文件中,我想访问这个数组中的值,所以我通过以下方式创建了一个实例:
$getValue = new <classname>;
$getValue->value..
我不确定如何继续,这样我就可以访问该数组中的每个元素。
【问题讨论】:
请发布实际的类定义。 【参考方案1】:您提到$value
在函数中,但是是公共的。您能否发布该函数,或澄清您的意思是在函数中声明还是实例化?
如果您正在实例化它,那很好,您可以使用数组键来索引$value
,就像任何其他数组一样:
$object = new classname;
$name = $object->value["name"];
$age = $object->value["age"];
// Or you can use foreach, getting both key and value
foreach ($object->value as $key => $value)
echo $key . ": " . $value;
但是,如果您在函数中声明 public $value
,那么这是一个语法错误。
此外,如果您声明 $value
(在函数内)没有 public
修饰符,则其 scope 仅限于该函数,并且不能是 public
。该数组将在函数结束时超出范围,并且出于所有意图和目的将不复存在。
如果这部分看起来令人困惑,我建议阅读visibility in php。
【讨论】:
【参考方案2】:就像你通常使用数组一样。
$getValue = new yourClass();
$getValue->value['name'];
【讨论】:
他还说 $value 是他类中的公共变量,因此可以访问。 @Rob 我明白了,但他说 class 所以class abc public $var; $this->var['test'] = '1'; $object = new abc(); echo $object->var['test']; //Outputs 1
感谢你们俩。 @rob,对不起,我没有让你编辑问题和投票。【参考方案3】:
使用代码
foreach($getValue->value as $key=>$value)
【讨论】:
【参考方案4】: <?php
interface Nameable
public function getName($i);
public function setName($a,$name);
class Book implements Nameable
private $name=array();
public function getName($i)
return $this->name[$i];
public function setName($i, $name)
return $this->name[$i] = $name;
$interfaces = class_implements('Book');
if (isset($interfaces['Nameable']))
$bk1 = new Book;
$books = array('bk1', 'bk2', 'bk3', 'bk4', 'bk5');
for ($i = 0; $i < count($books); $i++)
$bk1->setName($i, $books[$i]);
for ($i = 0; $i < count($books); $i++)
echo '// Book implements Nameable: ' . $bk1->getName($i) . nl();
?>
【讨论】:
以上是关于如何访问类对象内的数组值?的主要内容,如果未能解决你的问题,请参考以下文章
(4.3)数组对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组数组去重实现模板字符串的解析新课上线啦)