2011-01-24 97 views
2

說我有一個名爲a的數組。PHP數組錯誤

$a = array(1=>'one',2=>'two'); 

和另一個數組$ B

$b = array(a => $a); This doesnt work while, 

$b = array(a => array(1=>'one',2=>'two')); works. 
+5

'$ B =陣列( '一個'=> $一個);`應該工作;字符串數組鍵必須用引號引起來 – acm 2011-01-24 17:16:30

+1

無法重現。第一個發出一個通知「使用未定義的常量 - 假設'a'」,但它工作。但是,您應該像使用其他人提到的那樣使用字符串(引號中的文本))。 – KingCrunch 2011-01-24 17:18:36

回答

3

無法複製看看。這兩個例子的「工作」對我來說,在這個意義上,他們產生的數據結構:

Array 
(
    [a] => Array 
     (
      [1] => one 
      [2] => two 
     ) 

) 

然而,你不應該使用a爲裸字,也就是說,它應該是:

$b = array('a' => $a); 

可能在您的實際代碼中,這會造成您的麻煩;我不能肯定地說,因爲你製作的例子實際上並沒有產生失敗。

1

爲了調試始終設置error_reporting(E_ALL);。在你的情況下,顯示它不工作的原因。

你必須引用a =>'a'

1

雖然shamittomar是正確的,你應該用引號括起來的字符串數組的索引,PHP奇蹟般地變成未定義的常量(你的字符串不帶引號)轉換爲字符串,它創建了一個警告,但仍然運行代碼。我試過http://writecodeonline.com/php/上的所有例子,它們工作的很好!