2014-09-27 82 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"; 

?>