Foreach me retornando um único valor no JSON?

Bem estou utilizando CodeIgniter e, criei uma Query para pegar 3 valores aleatórios do banco de dados e depois transformei em Json, porém, na hora aparece somente um valor:

Observação: no meu sistema é gerar 3 perguntas aleatórias.

Meu foreach

$resultado=$this->db->query('SELECT pergunta FROM perguntas ORDER BY RAND() LIMIT 3');
foreach ($resultado->result() as $linha) {        	
  	return $linha;
}

A conversão para JSON

$resultado = $this->Model_gcm->get_all();
// print_r($resultado);
echo json_encode($resultado);

RESULTADO:

{
    pergunta: "essa é uma pergunta aleatória 2?"
}

Realmente, a sua instrução dentro do foreach, faz um return na primeira interação ele sai da execução retornando apenas uma linha.

Está assim:

$resultado=$this->db->query('SELECT pergunta FROM perguntas ORDER BY RAND() LIMIT 3');
foreach ($resultado->result() as $linha) {        	
  	return $linha;
}

Coloque assim:

$resultado=$this->db->query('SELECT pergunta FROM perguntas ORDER BY RAND() LIMIT 3');
return $resultado->result_array();

Depois o outro código está correto, continue da mesma forma!

Nesse caso especifico não precisa de um foreach, porque a informação já vem formatada!

1 curtida

Muito obrigado, quando eu chamava o result_array, eu não estava tentando concatenar com a variavel resultado dentro do foreach, ai ficava tipo assim:

foreach ($resultado->result_array() as $linha) {        	
  	return $linha;
}