在PHP中使用嵌套数组进行字符串解析

时间:2014-09-27 12:09:17

标签: php arrays string parsing

因为你必须猜到我是php的新手,所以请耐心等待。 目前我正在编写一些服务器端脚本,而在我遇到它的时候,最近有一件事困扰着我。情况如下。我有两个数组:一个包含元素,另一个包含第一个数组元素的键(索引)。困扰我的是当我试图通过字符串中的双数组变量输出元素时:

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

我得到" 解析错误:语法错误,意外' [',期待']'在第5行的C:\ xampp \ htdocs \ test1.php "错误。但是,如果只使用单个数组:

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]]";

?>

错误:

  

解析错误:语法错误,意外&#39; [&#39;,期待&#39;]&#39;在   第5行的C:\ xampp \ htdocs \ test1.php

感谢任何人花时间阅读并回答这个问题。

修改 谢谢大家的快速回复。 现在我看到我太天真了,以为我可以用一个简单的例子来模拟我的确切问题。 我正在处理的实际代码是:

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

具有讽刺意味的是,我已经创建了一个间接层,我的问题试图解决代码中的间接层:)

4 个答案:

答案 0 :(得分: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中有关于数组的更多信息。

答案 1 :(得分:2)

您需要使用以下代码更正您的php脚本:

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

echo $elements[$index[0]];

答案 2 :(得分:0)

您没有创建一个数组,这就是您收到错误的原因,而且您没有正确打印数组,因此请更改您的代码

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

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

答案 3 :(得分:0)

如果使用&#34;&#34;则不应将echo命令与数组变量一起使用。而不是括号()。在回显之前将数组结构分配给临时变量。

<?php

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

    echo "$value";

?>