2013-06-01 90 views
2

我有一個返回數組的函數。之後,我創建了第一個使用的另一個功能。這工作正常,我用var_dump()進行了測試,但是當我在其他頁面調用第二個函數時,我得到了NULL回來?這裏是我的代碼:作爲方法的函數

1功能

function get_blogs() 
{ 
    global $kapcsolat; 
    $sql = "SELECT * FROM blog WHERE b_aktiv ='1' ORDER BY b_datum DESC"; 
    if($eredmeny = mysqli_query($kapcsolat,$sql)) 
    { 
    if($db = mysqli_num_rows($eredmeny)>0) 
    { 
     while($sor = mysqli_fetch_assoc($eredmeny)) 
     { 
     $tomb[] = $sor; 
     } 
     mysqli_free_result($eredmeny); 
     return $tomb; 
    } 
    else 
    { 
     $tomb[] = null; 
     return $tomb; 
    } 
    } 
    else 
    { 
    echo'nem sikerült csatlakozni'; 
    } 
} 

這裏第二

function public_blog() 
{ 
    $blogok = get_blogs(); 
} 

這是我的代碼如何包括第二個功能:

include 'admin/functions.php'; 
public_blog(); 

但是,當我呼叫public_blog我不能使用$ blogok變量。我的意思是返回NULL。爲什麼?

回答

4

你的第二個函數既不返回任何東西,也不設置全局變量的值(並且$blogok是它創建函數的本地函數),因此它實際上是無用的。也許你的意思是這樣的:

function public_blog() 
{ 
    return get_blogs(); 
} 

... 
$blogok = public_blog(); 
doSomethingElseWith($blogok); 

不過,我在這裏看不出有什麼目的,對於中間的功能,除非你打算做的是get_blogs()結果的東西。

作爲一個旁註,這是什麼目的?

$tomb[] = null; 
return $tomb; 

這裏從函數返回一個單元素數組(如果沒有找到行)。但是這個結果不被認爲是空的,並且可能會在代碼的其他部分引入錯誤。最好用$tomb = array();$tomb = null替換它,這取決於它的使用方式。

+0

這項工作!謝謝。我只是想爲什麼我不能創建一個簡單的程序什麼是功能的結果... 好吧,以及如果我想返回更多的數組呢?我需要使用返回數組? –

+0

您可以隨時創建另一個功能;真正的一點是,你爲什麼需要它。如果你想收集一些不同函數的結果,是的,你可以像這樣返回它們:'return array(first_fn(),second_fn());' – raina77ow

+0

是的,這就是爲什麼我需要。非常感謝! –

0

您的第一個功能是return某些數據到第二個功能。

在你的第二個函數中,你只是將從第一個函數返回的數據分配給一個變量,而沒有其他的事情發生。

所以,你需要的是另一種return聲明:

function public_blog() 
{ 
    $blogok = get_blogs(); 
    return $blogok; 
} 
相關問題