2016-10-02 5 views
2

Может ли кто-нибудь объяснить мне, как получить окончательное значение, присвоенное переменной после завершения цикла while?PHP While loop for Select Query

В моем нижнем коде я хотел повторить ответ из цикла while после извлечения всех значений из строк.

Потому что, если я выхожу из эха из цикла while, он отображает только первую запись.

while ($row = oci_fetch_array($array)) { 
    $response = $row['0']->load(); 
    echo $response; 
} 
+0

Вы получите последнее значение строк в '$ response', ** Cause: ** Каждый раз, когда цикл выполняется, будет присваиваться значение переменной. Но, как вы эхом, вы можете видеть все значения в качестве вывода. –

ответ

3

вы получите последнее значение строки в $response.

Причина: Каждый раз, когда цикл выполняет, будет присваиваться значение переменной. Но, как вы эхом, вы можете видеть все значения в качестве вывода.

Так что вам действительно нужно сделать, это хранить значения в массиве ...

$response = array(); 
while ($row = oci_fetch_array($array)) { 
     $response[] = $row['0']->load(); 
} 

print_r($response); 

Если вам нужна дополнительная информация об этом, просто дайте мне знать.

+1

Работал отлично! – Batman

+0

@Batman, но вы не можете принять два ответа одновременно. –

+0

вы можете использовать [oci_fetch_all] (http://php.net/manual/en/function.oci-fetch-all.php) вместо 'oci_fetch_array' не нужно делать' while' loop – manRo

0

Попробуйте это:

$response = []; 
while ($row = oci_fetch_array($array)) { 
    $response[] = $row['0']->load(); 
} 

var_dump($response); 
+0

Это возвращает только 1-й ряд. – Batman

+0

Вы добавили '$ row ['0']'. Он будет зацикливаться до конца, а затем вернет первый ключ причины значения строки 0 –

0
while ($row = oci_fetch_array($array)) { 
    $response = $row['0']->load(); 
} 
echo $response; 
+0

Это возвращает только 1-ю строку. – Batman

+0

Что эхо эха внутри цикла? и что должно быть эхо-голос? скопируйте и вставьте его – Aschab

2

Поскольку вы делаете variable assignment и echo внутри цикла while, это не будет служить вашей цели.

Вы должны сделать это, как показано ниже: -

$response = array(); // create an array 
while ($row = oci_fetch_array($array)) { 
     $response[] = $row['0']->load(); // assign each value to array 
} 

echo "<pre/>";print_r($response);// print the array 

Примечание: - этот массив будет иметь все значения в настоящее время. Вы можете манипулировать им по своему желанию. Спасибо