返回语句只有echos第一个数组元素

时间:2014-04-29 02:59:52

标签: php arrays oop

当我在下面运行这个代码块时,只有第一个数组元素被回显Name1 : 4334232323,而不是回显所有元素。 我做错了什么?

public $name = array("Name1", "Name2", "Name3", "Name4");
public function display(){
foreach ($this->name as $names) {
    return $names .  ":" . mt_rand() .'<br>';
}
}

echo $names->display();

2 个答案:

答案 0 :(得分:5)

一旦遇到,

return将退出该方法。 您可以使用该变量来保存结果并最后返回。

public $name = array("Name1", "Name2", "Name3", "Name4");

public function display(){
  $result = '';
  foreach ($this->name as $names) {
    $result .= $names .  ":" . mt_rand() .'<br>';
  }
  return $result;
}

答案 1 :(得分:2)

foreach语句将一次填充$names一个条目,并循环访问与数组一样多的条目。这里的问题是您在循环期间return仅在第一个名称后退出display()函数。如果您希望它返回包含所有名称的单个字符串,您应该执行以下操作:

$output = "";
foreach ($name as $n) {
    $output = $output . $n . ":" . mt_rand() . '<br>';
}
return $output;