2014-11-23 22 views
0

好吧,所以我想調用我的index.php上的函數,它將調用misc.php上的函數集。 misc.php上的函數使用了一個在auction-loop.php中設置的數組,但它正在返回,就好像變量未定義一樣。獲取變量在另一個PHP文檔中設置

這裏就是我的拍賣loop.php樣子,

<?php 
$auctions = array(); 
$row = array(); 
$sqlquery = "SELECT * FROM auctions"; 
if ($result = $db->query($sqlquery)) { 
    while ($row = $result->fetch_assoc()) { 
     $auctions[$row['id']]['id'] = $row['id']; 
     $auctions[$row['id']]['title'] = $row['title']; 
     $auctions[$row['id']]['featured_image'] = $row['featured_image']; 
     $auctions[$row['id']]['description'] = $row['description']; 
     $auctions[$row['id']]['date'] = $row['date']; 
     $auctions[$row['id']]['location'] = $row['location']; 
     $auctions[$row['id']]['highlights'] = $row['highlights']; 
     $auctions[$row['id']]['catagories'] = $row['catagories']; 
     $auctions[$row['id']]['notes'] = $row['notes']; 
     $auctions[$row['id']]['terms'] = $row['terms']; 
     $auctions[$row['id']]['contact'] = $row['contact']; 
    } 
} 
?> 

這裏的misc.php,

<?php 
function auction_title($auction_id){ 
    echo $auctions[$auction_id]['title']; 
} 
?> 

最後,被調用的函數上的index.php,

include_once ('parts/connections/connection.php'); 
include_once ('parts/staticfiles/auction-loop.php'); 
include_once ('parts/staticfiles/misc.php'); 
<?php auction_title(1); ?> 

所有這一切,它吐出了錯誤,

說明:未定義的變量:在拍賣d:\ XAMPP \ htdocs中\份\ staticfiles \ misc.php第8行

正在拍賣-loop.php不使得人們雜項被設置在陣列。 在此先感謝! :)

回答

1

你必須告訴你的function auction_title它將使用global $auctions變量。

function auction_title($auction_id) { 
    global $auctions; 
    echo $auctions[$auction_id]['title']; 
} 
+0

這很好,謝謝! – 2014-11-23 17:04:17

+0

謝謝,儘管J.A提到它,但這不是唯一的方法。全局變量的使用是老派編程 - 但將數組作爲參數傳遞給函數的過程方法也是如此。 您應該真的考慮將代碼重構爲類,$ auctions將是一個對象屬性。 – Gabriel 2014-11-23 17:09:12

2

您沒有向auction_title()函數發送$ auction變量。如果你覺得生活在2005年,你可以在auction_title()函數中放入全球$拍賣的 。 或者,處理它的更好方法是重新定義函數以接受兩個參數。

function auction_title($auctions=array(),$auction_id=0){ 

    if (!empty($auctions) && isset($auctions[$auction_id])){ 
     return $auctions[$auction_id]['title']; 
    } 

} 

希望有所幫助。

+1

這仍然會讓他在2005年(或者更早)。實際的正確方法,絕對是面向對象的方法。 – Gabriel 2014-11-23 16:58:19

+0

不確定你的意思。很有可能您發佈的答案不起作用,因爲使用register_globals至少在過去的8年中不受歡迎,並最終從5.4中刪除。 http://php.net/manual/en/security.globals.php – 2014-11-23 17:03:51

+0

'register_globals'與此主題完全無關。 register_globals告訴PHP它是否應該考慮將GET或POST參數(鍵)作爲相應的PHP變量在全局範圍內自動定義。無關重用函數內的全局變量。 – Gabriel 2014-11-23 17:05:57

相關問題