Php 函数外部为空数组,数组在ISDE中正常
我在从函数外部和其他文件获取数组值时遇到问题。 在我的数组和函数中,这些值是用getter和setter定义的Php 函数外部为空数组,数组在ISDE中正常,php,Php,我在从函数外部和其他文件获取数组值时遇到问题。 在我的数组和函数中,这些值是用getter和setter定义的 Array ( [0] => XXXXXXXXXX [1] => 5ºA ) 这些值是由setter定义的,它们可以工作,因为我有print\r的值 public function getTurmaeProfessor(){ global $myArr; $myArr[] = $this->getProfessor(); $myArr[]
Array ( [0] => XXXXXXXXXX [1] => 5ºA )
这些值是由setter定义的,它们可以工作,因为我有print\r的值
public function getTurmaeProfessor(){
global $myArr;
$myArr[] = $this->getProfessor();
$myArr[] = $this->getTurma();
print_r($myArr);
return $myArr;
}
现在从另一个文件中我使用这个
$dados = $esmaior->getTurmaeProfessor();
if(!$dados){
echo "sem dados";
}
print_r($dados);
结果是空的,所以数组是空的…为什么
谢谢
更新
这里调用这个函数
$this->setTurma($nome_turma);
$this->setProfessor(($nome_professor));
$this->getTurmaeProfessor();
因此,如果一家公司把这个
public function getTurmaeProfessor(array $myArr)
我需要改变呼叫方法…怎么做
更新2
好的。。。
让我把一切都说出来,也许更好理解。
我的主要功能就是这个
public function novaAula($atividade, $turmas, $local, $dataAula, $inicio, $fim, $fundamentacao, $observacoes, $id_professor){
try{
$stmt = $this->db->prepare("INSERT INTO `aulas_exterior` (`atividade`,`id_turma`,`local`,`data_aula`,`inicio`,`fim`,`fundamentacao`,`observacoes`)
VALUES (:atividade,:id_turma,:local,:data_aula,:inicio,:fim,:fundamentacao,:observacoes);");
$stmt->bindparam(":atividade", $atividade);
$stmt->bindparam(":local", $local);
$stmt->bindparam(":data_aula", $dataAula);
$stmt->bindparam(":inicio", $inicio);
$stmt->bindparam(":fim", $fim);
$stmt->bindparam(":fundamentacao", $fundamentacao);
$stmt->bindparam(":observacoes", $observacoes);
$turma = explode(',', $turmas);
foreach ($turma as $id_turma) {
$stmt->bindParam(':id_turma', $id_turma, PDO::PARAM_INT);
$result = $stmt->execute();
$idAula = $this->db->lastInsertId();
$this->insertPedidoByLastId($idAula,$id_professor, $id_turma);
$nome_turma = $this->getTurmaById($id_turma);
$nome_professor = $this->getNomeById($id_professor);
$this->setTurma($nome_turma);
$this->setProfessor(($nome_professor));
$this->getTurmaeProfessor();
}
if (!$result) {
print_r($stmt->errorInfo());
return array('status' => 'error', 'message' => 'Problema ao gravar esta nova atividade...');
}
else{
return array('status' => 'success', 'message' => 'O pedido foi criado com sucesso...');
}
} catch (Exception $ex) {
echo $ex->getMessage();
}
}
正如你所看到的,我正在设置这些2
$this->setTurma($nome_turma);
$this->setProfessor(($nome_professor));
最后我调用这个方法
$this->getTurmaeProfessor();
进入这个函数,我想从这两个setter中获得名称
public function getTurmaeProfessor(array $myArr){
$myArr[] = $this->getProfessor();
$myArr[] = $this->getTurma();
return $myArr;
}
到目前为止……一切都在运行……问题是当我试图在其他文件中获取退货时……我收到了空的……为什么???不要使用
全局
。修复函数以接受参数:
public function getTurmaeProfessor(array $myArr){
// remove global $myArr;
....
return $myArr;
}
可选(但我不建议这样做,除非您知道要这样做)通过引用传递数组:
public function getTurmaeProfessor(array &$myArr){
// remove global $myArr;
// no return this time needed
}
现在,由于getTurmaeProfessor()
需要参数,因此必须更改所有调用才能做到这一点,即
$dados = $esmaior->getTurmaeProfessor($myArr);
为什么要使用global并返回值?因为我需要返回值来填充我的PDF,但这并不能回答问题。。。。你为什么两者都用?您应该为函数使用一个参数,并使用一个返回值,而不是globalcheck update 2请您需要将数组作为参数传递给此函数:显示如何调用该函数。可捕获的致命错误:传递给ESMAIOR::getTurmaeProfessor()的参数1必须是数组类型,没有给定,…$dados=$ESMAIOR->getTurmaeProfessor();见编辑后的答案。我还建议你做一些基本的教程,因为你缺乏基本的知识。我不知道你是否理解我的问题,或者我是否已经很好地解释了我的问题。如果我调用该函数时没有收到我期望的回报,那么这并不是一个缺乏。函数内部的数组是正确的,调用时外部是空的