PHP与数组的简单会话问题

时间:2014-02-28 02:42:09

标签: php arrays session

我有一个包含电子邮件的数组会话 - 我尝试将它们回显到屏幕上,但我什么都没有显示出来。

$_SESSION['extralistids'] = array('<abc@hotmail.com>', '<def@gmail.com>', '<fgh@yahoogroups.com>', '<ijk@aol.com>', '<def@yahoo.com>');
echo 'You have visited this page ' . $_SESSION['extralistids'][$_SESSION['counter']] . ' -for the first time.';

我使用它并输出正常:

$_SESSION['extralistids'] = array('abc', 'def', 'ghi', 'jkl', 'def', 'ghi', 'jkl', 'def', 'ghi', 'jkl', 'def', 'ghi', 'jkl');

我尝试用双引号替换单引号 - 没有快乐。                                             我在这里做了一些明显不对的事,但似乎无法发现错误 - 我想出错的任何想法?

2 个答案:

答案 0 :(得分:1)

没有任何内容显示,因为它们包含在括号(<>。)中,这使它们看起来像HTML。在回显这些值时需要使用htmlentities(),因此括号显示为实体,而不是解释为HTML字符。

echo 'You have visited this page ' . htmlentities($_SESSION['extralistids'][$_SESSION['counter']]) . ' -for the first time.';

答案 1 :(得分:1)

假设您在网页上显示此内容,则需要执行以下操作:

echo 'You have visited this page ' . htmlentities($_SESSION['extralistids'][$_SESSION['counter']]) . ' -for the first time.';

因为<>在HTML中具有特殊含义。浏览器将<abc@hotmail.com>视为HTML标记,而不是要显示的文本。 htmlentities会将其转换为&lt;abc@hotmail.com&gt;,然后会按预期显示。