分配给变量后存储所有值

时间:2014-02-03 13:51:24

标签: php

我在这里有一个函数,它给了我Moodle的所有用户。

function getallUsers(){
global $DB;
$users= $DB->get_records('user');
foreach($users as $user){
$allusers= $user->username."<br/>";
return $allusers;
}

}

另一个从网址中提取值的人。

function processXML($xmlContent){
$xmlObj= new SimpleXMLElement($xmlContent);
foreach($xmlObj->unidade_curricular->inscritos->aluno as $aluno){
$result= $aluno->identificador."<br/>";
return $result;
}
}

我需要在整个脚本中调用这些函数并将它们分配给变量。我回应他们,进行测试,但我只获得了第一个价值。我如何存储所有值?

$allUsers=  array();
$allUsers= getallUsers();
echo $allUsers; 
$dataClip=  array();
$dataClip= processXML($content_b);
echo $dataClip;

4 个答案:

答案 0 :(得分:1)

问题是您在return循环中调用foreach。您还要将用户分配到$allusers,而不是将用户添加到阵列。

尝试:

function getallUsers(){
  global $DB;
  $allusers = array();
  $users = $DB->get_records('user');

  foreach($users as $user){
    $allusers[]= $user->username;
  }

  return $allusers;
}

function processXML($xmlContent){
  $xmlObj = new SimpleXMLElement($xmlContent);

  $result = array();
  foreach ($xmlObj->unidade_curricular->inscritos->aluno as $aluno){
    $result[] = $aluno->identificador."<br/>";
  }

  return $result;
}

打印用户使用:

$allUsers = getallUsers();

echo implode('<br/>', $allUsers); 

答案 1 :(得分:0)

修复你的第一个功能,你不断重新分配变量

function getallUsers(){
    global $DB;
    $users= $DB->get_records('user');
    $allusers = "";
    foreach($users as $user)
        $allusers .= $user->username."<br/>";

    return $allusers;
}

另外,你是从循环中返回的。

答案 2 :(得分:0)

您只将结果存储在标量中。您需要使用数组或哈希。例如,您可以这样做:

推@result,$ aluno-&gt; identificador;

然后你可以返回那个数组

答案 3 :(得分:0)

这里实际上有两件事情是“错误的”:)

第一项是return部分。函数只返回1个值。之后的所有退货都不会被罚款:

function example($test){
    if($test == 'foo'){ return 'bar'; }
   return 'no bar';
}

如果$test=='foo'它将返回'bar'。因为它返回了一个值,所以不会返回'no bar'。这就是为什么你只得到第一个值。

另一个问题是你只保存一个值:

for($i=1; $i<=10; $i++ ){
    $value = $i;
}
echo $value;

这将导致10。只保存最后一个值,它会覆盖其他9次$value

要修复此问题,数组:

for($i=1; $i<=10; $i++ ){
    $value[] = $i;
}

你不能回显数组,但你可以这样看:

print_r ($value); // this will give the values.
echo implode(" / ", $value); // concat them to a string -> 0 / 1 / 2 / etc