2010-09-10 43 views
0

請看看我的代碼的功能:調用包含數組

function getShopConfig() 
{ 

$sql = "SELECT sc_name, sc_address, sc_phone, sc_email, sc_shipping_cost, sc_order_email, cy_symbol, sc_currency 
     FROM kol_shop_config , kol_currency 
     WHERE sc_currency = cy_id"; 
$result = dbQuery($sql); 
$row = dbFetchAssoc($result); 

if ($row) { 
    //extract($row); 

$shopConfig = array('name'   => $row['sc_name'], 
         'address'  => $row['sc_address'], 
         'phone'   => $row['sc_phone'], 
         'email'   => $row['sc_email'], 
         'sendOrderEmail' => $row['sc_order_email'], 
         'shippingCost' => $row['sc_shipping_cost'], 
         'currency'  => $row['sc_currency']); 
} 
return $shopConfig; 

} 

然後即時調用它像,

<td colspan="4" align="right"><?php getShopConfig(); echo $shopConfig['name'];?></td> 

,但沒有被顯示..哪裏是錯誤的?請幫忙。

注意:兩者都在同一頁面上。 dbQuery()和dbFetchAssoc()函數是預先定義的,並且以前可以正常工作。如果我在函數內部回顯它,然後調用它然後它的工作正常。

+0

的錯誤是把'getShopConfig()'函數的返回值沒有被存儲在任何地方。 '$ shopConfig'變量與'getShopConfig()'函數無關。有關修復方法,請參閱下面的hsz答案。 – TRiG 2010-09-10 11:46:22

回答

7
<?php 
    $shopConfig = getShopConfig(); 
    echo $shopConfig['name']; 
?> 

你必須返回數組之前分配給一些($shopConfig)變量。

+0

Thanxx ..問題解決.. – champ 2010-09-10 11:44:07

1
<?php $shopConfig = getShopConfig(); ?> 

<td colspan="4" align="right"><?php echo $shopConfig['name'];?></td> 
0

您只返回值,但沒有捕獲任何變量。

嘗試

<?php $shopConfig=getShopConfig(); echo $shopConfig['name'];?> 
0

你的函數返回一個值。你必須將這個值,那麼然後訪問的元素你想從變量賦值給一個變量:即

<td colspan="4" align="right"><?php $configs = getShopConfig(); echo $configs['name'];?></td> 

你所要做的是使用已經在函數中聲明的變量$shopConfig。這是一個局部變量,並不存在於該函數之外。如果你願意,你可以創建一個全局的$shopConfig,但這是一個冗餘的解決方案,因爲你從函數返回數組。你應該避免使用全局變量,因爲它會讓你的代碼更難理解和維護。

有,但是,(也許你只使用函數來獲得元素'name')通過直接訪問返回值這樣的速記方式:即

<td colspan="4" align="right"><?php echo $getShopConfig()['name'];?></td>