Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数外部为空数组,数组在ISDE中正常_Php - Fatal编程技术网

Php 函数外部为空数组,数组在ISDE中正常

Php 函数外部为空数组,数组在ISDE中正常,php,Php,我在从函数外部和其他文件获取数组值时遇到问题。 在我的数组和函数中,这些值是用getter和setter定义的 Array ( [0] => XXXXXXXXXX [1] => 5ºA ) 这些值是由setter定义的,它们可以工作,因为我有print\r的值 public function getTurmaeProfessor(){ global $myArr; $myArr[] = $this->getProfessor(); $myArr[]

我在从函数外部和其他文件获取数组值时遇到问题。 在我的数组和函数中,这些值是用getter和setter定义的

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();见编辑后的答案。我还建议你做一些基本的教程,因为你缺乏基本的知识。我不知道你是否理解我的问题,或者我是否已经很好地解释了我的问题。如果我调用该函数时没有收到我期望的回报,那么这并不是一个缺乏。函数内部的数组是正确的,调用时外部是空的