2016-06-09 2 views
-1

У меня возникают проблемы с получением значений массива вне функции и из другого файла. Внутри массива и функции у меня есть это, эти значения определены с добытчиками и сеттеровпустой массив вне функции и массив в порядке inisde

Array ([0] => XXXXXXXXXX [1] => 5ºA) 

Эти значения определяются сеттеров, и они работают, так как у меня есть значения с 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); 

И результат пуст, поэтому массив пуст ... почему ??

Благодаря

UPDATE Эта функция называется здесь

$this->setTurma($nome_turma); 
     $this->setProfessor(($nome_professor)); 
     $this->getTurmaeProfessor(); 

Так что, если положить этот

public function getTurmaeProfessor(array $myArr) 

Мне нужно, чтобы изменить способ вызова ... как сделай это??

UPDATE 2

Ok ... Позвольте мне все, может быть, лучше понять. Моя главная функция это один

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(); 

Ввод этой функции я хочу иметь названия из этих 2 сеттеров

public function getTurmaeProfessor(array $myArr){ 
    $myArr[] = $this->getProfessor(); 
    $myArr[] = $this->getTurma(); 
    return $myArr; 
} 

До сих пор ... все работает .... Проблема в том, когда я пытаюсь получить возврат в другом файле ... я получаю empt ... why ??

+1

Почему вы используете глобальный ___and___, возвращающий значение? –

+0

Потому что мне нужно вернуть значения для заполнения. Pdf – gmc1972

+0

Это не отвечает на вопрос ... почему вы используете __both__?Вы должны использовать аргумент для функции, а возврат, а не глобальное обновление проверки –

ответ

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); 
+0

проверить обновление пожалуйста – gmc1972

+0

Ловкая фатальная ошибка: аргумент 1 передан ESMAIOR :: getTurmaeProfessor() должен быть массива типов, ни одного заданного, ... $ dados = $ esmaior-> getTurmaeProfessor(); – gmc1972

+0

См. Отредактированный ответ. Я также рекомендую вам сделать некоторые базовые учебники, так как вам не хватает оснований. –

Смежные вопросы