Повторно использовать переменную вне функции? - PullRequest
1 голос
/ 02 июня 2011

Как использовать возвращаемый массив $row в приведенном ниже примере, чтобы я мог повторно использовать переменную вне этой функции ?

Мне удается отобразить информацию внутри функции, используя $row['columnName'], но различные комбинации global и $GLOBALS, return $xyz и получение переменной области видимости для меня немного меня утомили. Любые ответы, пожалуйста?

<?php
function getInfo() {

    $query = /* Some SQL Query */;

    $result = mysql_query($query); 

    if($result == false) 
    { 
       user_error("Query failed: " . mysql_error() . "<br />\n$query"); 
    } 
    elseif(mysql_num_rows($result) == 0) 
    { 
       echo "<p>Sorry, no rows were returned by your query.</p>\n"; 
    } 
    else 
    { 
    while ($row = mysql_fetch_assoc($result)) {
        /* What goes here? */
        }
    } 

}
?>

Ответы [ 3 ]

4 голосов
/ 02 июня 2011

Просто верните его из вашей функции:

$results = array();
while ($row = mysql_fetch_assoc($result)) {
    $results[] = $row;    // or do something more with the row
}
return $results;

и вызовите вашу функцию как:

$query_results = getInfo();
1 голос
/ 02 июня 2011
function getInfo() {

    $query = /* Some SQL Query */;

    $result = mysql_query($query); 

    if($result == false) 
    { 
       user_error("Query failed: " . mysql_error() . "<br />\n$query"); 
    } 
    elseif(mysql_num_rows($result) == 0) 
    { 
       echo "<p>Sorry, no rows were returned by your query.</p>\n"; 
    } 
    else 
    { 

    $data = array();

    while ($row = mysql_fetch_assoc($result)) {

           $data[] = $row;
        }

     return $data;
    } 

}

Тогда вы просто делаете: $mydata = getInfo();

0 голосов
/ 02 июня 2011

Вы можете использовать $row непосредственно внутри блока while или передать его как параметр другой функции, которая выполняет обработку на уровне строк. Сначала определите функцию:

function processRow($r)
{
  echo $r['columnName'];
}

Затем внутри вашего цикла вызовите эту функцию:

while ($row = mysql_fetch_assoc($result)) {
  processRow($row);
}

В этой функции значение, известное как $row в getInfo, будет известно как $r. (Вы можете назвать формальный параметр $row, если хотите, но я использовал другое имя здесь, просто чтобы проиллюстрировать, что им не нужно иметь одинаковое имя. Если вам не ясно в области видимости переменных, затем присвоение множеству переменных одного и того же имени может просто еще больше запутать вас.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...