2012-07-13 59 views
0

我打電話,返回一個數組的函數,但我遇到了此問題:在寫情況下不能使用函數的返回值PHP函數錯誤無法在寫入上下文中使用函數返回值 - 返回數組的函數。大腦慢慢爆

很多人得到這個錯誤,但我不能看看我做錯了什麼。

這是函數:

function select_image_styles_from_category($category) 
{ 
$image_details(); 
switch($category) 
{ 
    case 'twine': 
      $image_details[0] = get_bloginfo('template_directory') . '/images/titles/blog-twine.png'; 
      $image_details[1] = 'on-top'; 
      break; 
    case 'scrapbook': 
      $image_details[0] = get_bloginfo('template_directory') . '/images/blog/papers.png'; 
      $image_details[1] = 'on-top'; 
      break; 
    default: 
      $image_details[0] = 'stuff'; 
      $image_details[1] = 'things'; 
} 

return $image_details; 

} 

我再從另一個調用功能該功能,這是行它的錯誤(有更多的此功能,但它只是多餘的問題的其餘部分) :

function add_img_styles_to_special_categories($the_content_string, $category) 
{ 
     //erroring line 
    $image_details() = select_image_styles_from_category($category); 
} 

我是否缺少演員?我需要顯式構造一個數組嗎?我是否已經填補了案件陳述?我真的不明白我錯過了什麼。你們中任何一個華麗的美女都有指點嗎?

+0

'$ image_details'應該是什麼?第一次出現是函數調用,這意味着在'$ image_details'中存儲了一個函數。之後它是一個數組。在錯誤行中...我不確定你在做什麼。 爲什麼括號? – 2012-07-13 09:54:03

回答

1

你已經編寫了代碼,看起來像是在調用函數,當你只是想分配給一個變量。

$image_details(); 

的意思是「取$image_details的價值,把它解釋爲一個函數的名稱,並調用該函數」。

所以,當你(誤顯然)把多餘的括號,寫

$image_details() = select_image_styles_from_category($category); 

編譯器讀取此爲「採取的$image_details的價值,把它解釋爲一個函數名,調用該函數和將select_image_styles_from_category()的結果分配給它「。但是你不能分配任何東西給一個函數的結果(你只能將它存儲在某個地方),因此就是錯誤。

+0

是的,聰明的我,我設法忘記「()」構造一個函數,而不是聲明一個新的數組變量......!已經改變它現在(陣列)$ image_details和它的作品。 *打頭*感謝回覆:) – Gem 2012-07-13 10:03:16

+1

@Gem:'()'不構造函數,它*調用*一個。我知道你知道我們在說什麼,但熟悉正確的術語可以幫助你減少痛苦(增加信心)。 – Jon 2012-07-13 10:06:00

+0

Gah!是的,這就是我的意思:)謝謝澄清! – Gem 2012-07-13 10:20:54

5

$image_details()是一個函數調用,你不能寫入函數。你只是想把它返回給調用者?

return select_image_styles_from_category($category); 
+0

謝謝!是的,事實證明,我愚蠢地用「()」來表示一個數組並不認爲我實際上正在創建一個函數 - 哇。這是愚蠢的我:) 我已經改變它是(數組)$ image_details在這兩個計數,它現在實際上工作了! – Gem 2012-07-13 10:01:09