2010-09-10 14 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>