在php

2013-02-25 35 views
1

中同時定義多個結果我有$config其中有數組的變量。在我的Smarty分配變量是這樣的:在php

$smarty->assign('config', $config); 

當我打電話吧,我用這個:{$config.wateverarrayyouwant} 我現在想要做同樣的事情用PHP。我想要define他們以同樣的方式。我如何才能在一行中定義$config中的所有數組? 我只知道如何通過使用這種方法來定義在一個時間的變量之一:

define('wateverarrayyouwant', $config['wateverarrayyouwant']); 

我試圖改變wateverarrayyouwant到一個變量,因爲它可以是任何數組:

define('$wateverarrayyouwant', $config[$wateverarrayyouwant]); 

但上面的代碼不不行。什麼是實現我想要的好方法?

回答

2

如果你想創建數組中的每個鍵值對,你可以使用一個define

<?php 
foreach($config as $key => $value) { 
    define($key, $value); 
} 

但是我會注意到,你不能define數組值,所有define的必須是標量:

常數的值;只允許標量和空值。標量值是整數,浮點數,字符串或布爾值。

如果您檢查OP對了什麼,他正試圖實現進一步的解釋答案,它是可以做到的:

<?php 
foreach($config as $key => $value){ 
    $$key = $value; 
} 
?> 
+0

不是我想要的,但你肯定值得+1你的答案。 – shnisaka 2013-02-25 05:52:35

+0

哈哈,謝謝!所以你想要什麼,因爲我現在還不太確定。 =] – Jon 2013-02-25 05:53:55

+0

現在我正在考慮它,我不認爲這是可能的..我不需要解釋..我只是刪除這個問題。 – shnisaka 2013-02-25 05:55:01

0

你可能不希望使用定義在這裏。 define用於創建constants不是普通的變量,並且附帶着一定的內涵:

  • 他們是不可改變的腳本
  • 的生活中,他們必須是標量

如果你只是想要一個數組變量,然後像下面這樣定義它:

$whatever = array(
    'key1' => 'value1' 
); 
+1

他已經知道如何創建一個數組,這正是他傳遞給Smarty的原因;)我認爲他希望使配置不變(這取決於你認爲的配置變量是否爲真)。或者,他希望他們成爲全球性或超全球性的。超級全局不會發生,因爲這些是保留的,但另一種選擇是將其分配給'$ GLOBALS ['config'] = $ config;' – Jon 2013-02-25 00:45:16

1

這個問題不能完成。因爲我試圖將一個變量定義爲一個常量。我只是在考慮如何減少變量的字母,而不是讓我最好讓他們獨處。從邏輯上講,爲什麼有人需要將$config[$wateverarrayyouwant]更改爲wateverarrayyouwant。我只是在考慮維護一個整潔的代碼。但現在我想它..最好是離開它,因爲它是:$config[$wateverarrayyouwant]

這是可以做到的:

foreach($config as $key => $value){ 
    $$key = $value; 
} 
+0

哦!如果你想讓他們成爲他們自己的變數,那可以做到! 'foreach'循環中的'$$ key = $ value;'! – Jon 2013-02-25 06:06:04

+0

@Jon請編輯你的答案,並告訴我 – shnisaka 2013-02-25 06:07:00

+1

編輯這兩個答案,因爲我在這裏忘記了編輯必須得到同行評審批准。 ^^ – Jon 2013-02-25 06:10:45