函数和数组之外的空数组是ok inisde

时间:2016-06-09 11:15:16

标签: php

我在使用函数和其他文件之外获取数组值时遇到问题。 在数组和函数中我有这个,这些值是用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();

直到现在......一切正常......问题是当我试图在其他文件中获得回报时...我收到了空...为什么?

1 个答案:

答案 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);