我在这里有一个函数,它给了我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;
答案 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