我在使用函数和其他文件之外获取数组值时遇到问题。 在数组和函数中我有这个,这些值是用getter和setter定义的
i + PASSWORD_MAX_CONS_LENGTH
这些值是由setter定义的,因为我有print_r
的值,所以它们有效Array ( [0] => XXXXXXXXXX [1] => 5ºA )
现在从另一个文件我使用这个
public function getTurmaeProfessor(){
global $myArr;
$myArr[] = $this->getProfessor();
$myArr[] = $this->getTurma();
print_r($myArr);
return $myArr;
}
结果是空的,所以数组是空的......为什么??
由于
UPDATE 这个函数在这里调用
$dados = $esmaior->getTurmaeProfessor();
if(!$dados){
echo "sem dados";
}
print_r($dados);
所以,如果放一个
$this->setTurma($nome_turma);
$this->setProfessor(($nome_professor));
$this->getTurmaeProfessor();
我需要改变调用方法......怎么做?
更新2
好的... 让我把所有可能更好的理解。 我的主要功能是这个
public function getTurmaeProfessor(array $myArr)
正如你所知,我正在设置这两个
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();
}
}
最后我调用了方法
$this->setTurma($nome_turma);
$this->setProfessor(($nome_professor));
输入此功能我想拥有来自这两个二传手的名字
$this->getTurmaeProfessor();
直到现在......一切正常......问题是当我试图在其他文件中获得回报时...我收到了空...为什么?
答案 0 :(得分:5)
请勿使用global
。修复你的函数接受参数:
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);