2013-03-08 65 views
-4

我找不到任何有用的示例或通過谷歌搜索在線幫助,解決方案應該很簡單,但結果不是我我很期待。PHP - 爲什麼我不能從多維數組的第二個元素訪問數據/

我有3個陣列 - 至列出幾個:

$A = array(1,0,1,1,1,0,1,1,1); 
$B = array(1,1,1,0,1,0,1,0,1); 
$C = array(1,1,1,0,1,0,1,1,1,0,1); 

然後我想創造一個陣列,其中的元素將是[0] - [2]引用上述各3個陣列。該宣言是:

$LETTERS= array($A,$B,$C); 

我試圖讓$A[x]與此代碼的元素:

$LETTERS[0][0]; 

但問題是,它輸出:的Array[0]代替1

如果我回顯$A[0]輸出將如預期的1

那麼我做錯了什麼?我不認爲保留字& |有問題使用大寫字母作爲變量,是嗎?

如何訪問此二維數組中的數據?

在此先感謝您的幫助。


編輯
的問題是,我試圖呼應這段代碼的輸出:

echo "element [0][0]: $LETTERS[0][0]"; 

出於某種原因,這不會工作。除了實際的變量外,我需要排除一切。任何人都知道爲什麼這樣?

+2

不,它不會http://codepad.org/p3Vk0FFp – 2013-03-08 14:07:02

回答

3

您需要重新檢查您的代碼。

echo $LETTERS[0][0]; 

輸出1

編輯問題答案

echo "element [0][0]: {$LETTERS[0][0]}"; 
+0

嘗試它與我的編輯,看看你是否得到我的同樣的錯誤....你能解釋爲什麼嗎? – CheeseConQueso 2013-03-08 14:12:57

3

在這裏工作:

php > $A = array(1,0,1,1,1,0,1,1,1);           
php > $B = array(1,1,1,0,1,0,1,0,1); 
php > $C = array(1,1,1,0,1,0,1,1,1,0,1); 
php > $LETTERS= array($A,$B,$C); 
php > echo $LETTERS[0][0]; 
1 

OK,給你的編輯... PHP解釋器是不貪。當您將多維數組嵌入到字符串中時,它不會拉入多個數組維度。 e.g

echo "$arr[0][0]" 

被視爲

echo "$arr[0]", "[0]" 
     ^^^^--arrray 
       ^^^-random string 

echo $array迫使陣列成字符串上下文,但PHP不會轉儲數組的內容,它會簡單地打印出Array,這就是爲什麼你有Array[0]

要強制PHP看到整個數組引用,您需要使用{}符號:

echo "{$arr[0][0]}"; 

這將妥善處理額外的陣列尺寸。順便提一下,這對於字符串中的對象也是有用的,例如,

echo "$obj->attribute->attribute" 

更好寫成

echo "{$obj->attribute->attribute}" 
+0

用我的編輯器試試看看你是否得到我的同樣的錯誤....你能解釋一下爲什麼嗎? – CheeseConQueso 2013-03-08 14:12:27

+1

@CheeseConQueso:請參閱上面的編輯 – 2013-03-08 14:20:20

1

該代碼工作正常。現場演示here

編輯:你的版本之後,正確的方式做這將是:

echo "element [0][0]: {$LETTERS[0][0]}";

這樣PHP會妥善擴大您的變量。

+0

試一試我的編輯,看看你是否得到我的同樣的錯誤....你能解釋爲什麼嗎? – CheeseConQueso 2013-03-08 14:12:06

+0

是的,你需要使用「{$ LETTERS [0] [0]}」,這樣PHP將正確地擴展你的變量。 – 2013-03-08 14:14:01

相關問題