2014-09-27 80 views
0

因爲您一定已經猜到了我是新來的PHP,請耐心等待。 目前我正在編寫一些服務器端腳本,而我一直在做這件事,最近有一件事情讓我感到困擾。情況如下。我有兩個數組:一個是元素,另一個是第一個數組元素的鍵(索引)。在PHP中使用嵌套數組進行字符串解析

echo "$elements[$index[0]]"; 

我得到「解析錯誤:語法錯誤,意想不到的‘[’,希望‘]’用C時,我試圖通過輸出雙數組變量的元素在一個字符串讓我困擾的是: \ xampp \ htdocs \ test1.php第5行「錯誤。但是,如果只使用單個陣列,如下:

echo "$elements[0]"; 

它工作得很好(輸出a)。

我已經搜索了論壇,發現沒有什麼幫助。還通過What is the difference between single-quoted and double-quoted strings in PHP?閱讀了單引號和雙引號,但幾乎沒有成功。 我使用目前的解決方法是,我節省從$index數組的值到一個變量,並用它作爲一個指數到$elements陣列:

$key = $index[0]; 
echo "$elements[$key]"; 

工作正常,總線感覺就像一個水平間接的。

代碼:

<?php 

    $elements = ["a", "b", "c"]; 
    $index = [2 , 1 , 0]; 

    echo "$elements[$index[0]]"; 

?> 

錯誤:

Parse error: syntax error, unexpected '[', expecting ']' in C:\xampp\htdocs\test1.php on line 5

由於任何人給他們的時間來閱讀和回答這個問題。

編輯: 謝謝大家的及時回覆。 現在我看到我太天真了,以爲我可以用一個簡單的例子模擬我確切的問題。 我處理實際的代碼是:

mysql_query("INSERT INTO pics (filename, date) VALUES($dirArray[$keys[$index]] , $timestamp)") 
       or die(mysql_error()); 

錯誤:

Parse error: syntax error, unexpected '[', expecting ']' in C:\xampp\htdocs\dbsetup.php on line 47 

具有諷刺意味的是也很強,我已經創建了一個間接層與我的問題試圖解決的一個水平間接代碼:)

+0

在編輯中使用材質開始一個新問題會更好。您也應該使用相應的'mysqli_ *'函數,因爲'mysql_ *'已被棄用。請注意,您實際上是將一個字符串傳遞給mysql_query,因此您可以使用與構造字符串相同的方式來構造該字符串以「echo」 - 即「一些文本」。 $ variable [$ index [0]]。 「更多文字」。 – 2014-09-27 13:11:11

回答

3

如果你只是呼應的變量,你不需要在PHP中使用引號:

echo $elements[$index[0]]; 

如果你想添加一些純文本,則需要使用引號:

echo "element at index 0: " . $elements[$index[0]] . "\n"; 

根據您使用的PHP版本,您可能還會在使用[ ... ]作爲數組構造函數時遇到錯誤;在PHP 5中。3和更早的版本,陣列具有使用語法

$fruits = array('apple', 'orange', 'banana'); 

而在PHP 5.4起聲明,你可以使用速記

$fruits = ['apple', 'orange', 'banana']; 

有關於在PHP array documentation陣列的更多信息。

2

您需要使用此代碼來糾正你的PHP腳本:

$elements = array("a", "b", "c"); 
$index = array(2 , 1 , 0); 

echo $elements[$index[0]]; 
0

你沒有創建一個數組,這就是爲什麼你得到錯誤,你也不能打印陣列正確因此改變你的代碼

$elements = array("a", "b", "c"); 
$index = array(2 , 1 , 0); 

echo $elements[0]; 
echo $index[0]; 
echo $elements[$index[0]]; 
0

你不應該結合使用echo命令,如果你一個數組變量使用「」而不是括號()。在回聲之前,將數組結構分配給一個臨時變量。

<?php 

    $elements = ["a", "b", "c"]; 
    $index = [2 , 1 , 0]; 
    $value = $elements[$index[0]]; 

    echo "$value"; 

?>