我已经在php中编写了一个函数,以了解方法链在php中是如何工作的。但它并没有向我显示任何输出。
我的代码是:
class sample {
function something($array) {
$samples = array();
foreach($array as $key=>$value) {
$this->$key = $value;
return $key;
}
}
}
$hot = new sample();
$hot->something(array('maths'=>'12','science'=>'10'));
echo $hot->something()->maths;
?>
当我运行此代码时,我没有得到任何输出。我收到了Warning: Missing argument 1 for sample::something(), called in /web/com/13987442563085/main.php on line 22 and defined in /web/com/13987442563085/main.php on line 10 Warning: Invalid argument supplied for foreach()
我的预期输出是1
。
希望你们能帮助我找到正确的输出。任何帮助将不胜感激。
答案 0 :(得分:0)
试试
<?php
class sample {
function something($array) {
$samples = array();
foreach($array as $key=>$value) {
$this->$key = $value;
return $value;
}
}
}
$hot = new sample();
echo $hot->something(array('number'=>'1','subject'=>'maths'));
?>
答案 1 :(得分:0)
你的代码从正面到背面都没有多大意义。
您正在调用$hot->something()
而没有任何参数 - 然后您想知道是否有错误信息告诉您这一点?
在foreach循环中使用return
就像在第一次循环迭代中突破它(以及整个方法)。
你不能在这里“链接”任何东西(除了你想要的不是“方法链”,因为你不是在这里连续调用多个方法),因为你的方法没有返回值。如果您希望能够访问对象的属性,那么“方法调用的结果”(或调用其他方法,那么),则必须返回对象:
class Sample {
function something($array) {
foreach($array as $key=>$value) {
$this->$key = $value;
}
return $this;
}
}
$hot = new Sample();
echo $hot->something(array('maths'=>'12','science'=>'10'))->maths;
此将输出12
。 (它仍然没有多大意义。)