2011-05-18 126 views
2
function recurCalc($price){ 
    $data = array(); 
    $data['recurafter'] = $price * 0.3; 
    $data['recurtrial'] = $price - ($recurafter*2); 
    return $data; 
} 
$data = recurCalc($product_price); 
view()->assign("price",$product_price); 
view()->assign("recurtrial" $data['recurtrial']);
  
view()->assign("recurafter", $data['recurafter']); 

我試圖使這一功能工作,但它給我的問題:這是否有意義 - 功能?

view()->assign("recurtrial" $data['recurtrial']);
 --> view()->assign("recurtrial" $data['recurtrial']); 

我不是在陣列特別好。它放在index.php中,而smarty的東西將放在由pinnaclecart呈現的html文件中。

如果您能提供幫助,我將不勝感激。

+0

您應該永遠不要切斷錯誤消息。 – KingCrunch 2011-05-18 09:11:19

+0

@KingCrunch,你是什麼意思? – joe 2011-05-18 09:14:58

+0

你有另一個問題:變量'$ recurafter'未設置。你可能意思是'$ data ['recurafter']' – Zecc 2011-05-18 09:16:22

回答

1

您的明顯的問題是,你試圖從一個函數返回多個值。嘗試對每個值使用單獨的函數:

function recurAfter($price) { return $price * 0.3; } 
function recurTrial($price) { return $price - recurAfter($price); } 

view()->assign("price", $product_price); 
view()->assign("recurtrial", recurTrial($product_price)); 
view()->assign("recurafter", recurAfter($product_price)); 
3

array是關鍵字,不能用作類(名稱)。

$data = new Array(); 

你可能想要的是一個共同的陣列

$data = array() 

這裏閱讀:http://php.net/language.types.array

+0

@KingCrunch,所以如果我想將數據保存在數組中,它必須是$ data = Array()?或者它是$ data [] = Array();?對不起,我對數組感到困惑 – joe 2011-05-18 09:11:54

+1

像我寫的:'$ data = array()'。用'$ data []'你可以訪問數組,但是爲此,它必須是數組之前;) – KingCrunch 2011-05-18 09:13:01

+1

@KingCrunch,哦好吧,array()存儲數據信息,而[]允許我從數組中獲取數據。得到它了。 – joe 2011-05-18 09:16:57

2

不要使用new關鍵字出現這種情況。

+0

你想創建一個數組。在php中,正確的語法是'$ data = array();' – Mr47 2011-05-18 09:11:47

+2

使用'new'你可以從給定的類名實例化一個新的對象。數組不是PHP中的對象。 – KingCrunch 2011-05-18 09:11:52

0

可能最好只是做

$data = Array(); 

至於功能上......很難說多少常識讓斷章取義,但它會奏效。

+1

不會,因爲'$ price - ($ recurafter * 2); '引用了一個未設置的'$ recurafter'變量。 – Zecc 2011-05-18 09:21:56

+1

@Zecc相當如此 - $ data ['recurtrial'] = $ price - ($ data ['recurafter'] * 2) - 這會教會我在我早晨喝咖啡之前回答問題:) – Wagemage 2011-05-18 09:25:49

+0

zeec,謝謝:) – joe 2011-05-18 09:53:12

1

在PHP中聲明一個數組的常用方法是

$data = array(); 

$data = array(
    'recurafter' => $price * 0.3, 
    'recurtrial' => $price - ($recurafter*2), 
); 

我覺得這是更好的:

function recurCalc($price){ 
    $recurafter = $price * 0.3; 
    $recurtrial = $price - ($recurafter*2); 

    $data = array('recurafter'=>$recurafter, 'recurtrial'=>$recurtrial); 
    return $data 
}; 
+0

啊你的例子有道理,讓我試試吧 – joe 2011-05-18 09:17:47

+0

等待如何做功能以後再計算? – joe 2011-05-18 09:19:00

+1

我更改了我的代碼,我想您可以使用最後一個片段 – 2011-05-18 09:20:48