0
echo "{$line['text_1']}";

上面的回声工作正常,但是当涉及到二维数组时,在我的崇高中,只有 {$line['text_2']} 这部分工作正常。sublime 和浏览器都输出错误

echo "$array_2d[{$line['text_1']}][{$line['text_2']}]";

任何想法?


更新

echo "$array_2d[$line['text_1']][$line['text_2']]";

使用 xampp,错误解析错误:语法错误,C:\xampp\htdocs 中出现意外的 '[',期待 ']'

我只是从 mysql_fetch_assoc 输出一个值。我可以通过 echo '' 以另一种方式做到这一点,但是我试图让我的代码更容易用于将来的编辑和代码复制粘贴

是的,我正在做类似的事情

echo "The price is $array_2d[$line['text_1']][$line['text_2']]"

双引号中有很多html代码。

4

7 回答 7

1

你为什么要输出数组?

如果是出于调试目的,您可以只使用本机 php 函数print_r()var_dump()

于 2013-07-26T13:44:12.603 回答
0

这应该工作:

echo $array_2d[$line['text_1']][$line['text_2']];
于 2013-07-26T13:43:14.530 回答
0

示例变体

我想知道为什么你会尝试使用数组$line作为访问.$array_2d

无论如何,试试这个:

echo($line['text_1'].'<br>');

这个:

echo($array_2d['text_1']['text_2'].'<br>');

最后这个(基于您的$line数组提供了$array_2d数组示例的键)

$key_a = $line['text_1'];
$key_b = $line['text_2'];
echo($array_2d[$key_a][$key_b].'<br>');

也可以像这样写得更短:

echo($array_2d[$line['text_1']][$line['text_2']].'<br>');

验证/转储数组内容

要验证您的数组是否包含您期望的数据,请不要使用print_r. 请改用var_dump,因为它会返回更多信息,您可以使用它来检查您认为可能遇到的任何问题。

例子:

echo('<pre>');
var_dump($array_2d);
echo('</pre>'); 

var_dump和之间的区别print_r

var_dump函数显示变量(或表达式)的结构化信息,包括其类型。使用缩进显示结构的值递归地探索数组。var_dump还显示了哪些数组值和对象属性是引用。

print_r另一方面,以可读的方式显示有关变量的信息,数组值将以显示键和元素的格式显示。但是您会错过var_dump提供的详细信息。

例子:

$array = array('test', 1, array('two', 'more')); 

输出print_r

Array
(
    [0] => test
    [1] => 1
    [2] => Array
        (
            [0] => two
            [1] => more
        )
)

输出var_dump

array(3) {
  [0]=> string(4) "test"
  [1]=> int(1)
  [2]=> array(2) 
        {
            [0]=> string(3) "two"
            [1]=> string(4) "more"
        }
}
于 2013-07-26T13:47:02.003 回答
0

您可以使用print_r()来回显数组。

例如:

print_r($array);

输出将是:

Array ( [test] => 1 [test2] => 2 [multi] => Array ( [multi] => 1 [multi2] => 2 ) )

您也可以使用它使其在 HTML 上下文中更具可读性:

echo '<pre>';
print_r($array);
echo '</pre>';

输出将是:

Array
(
   [test] => 1
   [test2] => 2
   [multi] => Array
        (
            [multi] => 1
            [multi2] => 2
        )

 )
于 2013-07-26T13:44:11.417 回答
0

回显变量时,您不必使用引号:

echo $array_2d[$line['text_1']][$line['text_2']];

如果您确实需要使用该字符串输出某些内容,连接运算符可以帮助您:

echo "Array: " . echo $array_2d[$line['text_1']][$line['text_2']];
于 2013-07-26T13:45:02.003 回答
0

您可以使用print_r()orvar_dump()来回显一个数组。

print_r()以人类可读的方式显示有关变量的信息,而函数var_dump()显示有关变量/表达式的结构化信息,包括其类型和值。

$array = 'YOUR ARRAY';
echo "<pre>";
print_r($array);
echo "</pre>";

或者

$array = 'YOUR ARRAY';
var_dump($array);
于 2013-07-26T13:49:28.447 回答
0

你应该可以说

echo "item is {$array_2d[$line['text1']][$line['text2']]}";

到达一个子元素。

当然,只有当它不是字符串中唯一的东西时,它才真正有用。如果您只回显一个值,则不需要引号,事情会变得更简单。

echo $array_2d[$line['text1']][$line['text2']];
于 2013-07-26T13:50:36.080 回答