【问题标题】:Parse error: syntax error, unexpected T_LIST in /home/public_html/gigs.html on line 12解析错误:语法错误,第 12 行 /home/public_html/gigs.html 中的意外 T_LIST
【发布时间】:2014-04-28 21:51:12
【问题描述】:

我正在尝试使用 PHP 为我的乐队网站构建一个活动页面,以列出我们即将举行的演出(我对服务器端脚本还是很陌生)并且我不断在浏览器的页面上显示上述错误。我确定我遗漏了一些简单的事情/做错了,但我似乎无法弄清楚它是什么(我也在努力在网上找到相关信息)

这是我在 html / php 页面上的代码

<?php
$body_id = 'gigs'
?>

<?php include($_SERVER['DOCUMENT_ROOT'].'/fragments/html.html'); ?>

<div class="content-left">

    <?php
    include($_SERVER['DOCUMENT_ROOT'].'/php/arr_gigs.php');

    foreach ($gig as list($day, $month, $year, $location, $description, $event_link, $ticket_link)) {

        echo '<span class="top">\n\t';
        if ($ticket_link = true){
            echo '<a href="$ticket_link" onClick="return false;"> BOOK TICKETS </a>\n';
        };
        echo '</span>\n\n';                         
        echo '<span class="bottom">\n\t';
        echo '<a href="$event_link" class="gig-tag" onClick="return false;">\n\t\t';
        echo '<span class="when">$day \/ $month - $location</span>\n\t\t';
        echo '<span class="where">$description</span>\n\t';
        echo '</a>\n';
        echo '</span>\n';
    };
?>

</div>

这里是 php/arr_gigs.php,我希望在其中输入所有演出详细信息、日期、位置、链接等。

<?php

$gig = [
[28,12,2013,
'The Firebug - Leicester', 
'with more awesome bands',
'www.facebook.com',
'www.seetickets.com'],

[19,04,2014,
'Pi Bar - Leicester', 
'(acts tbc)',
'www.facebook.com',
''],
];

?>

据我所知,我正在运行最新版本的 PHP(5.3 或类似版本) 如果有人可以给我任何帮助或建议,我将非常感激:) 或者如果您认为有更好的方法可以达到预期的效果

【问题讨论】:

  • 首先你好像少了一个“;”就在开头:$body_id = 'gigs';
  • 我哪里出错了?我正在关注此页面上的信息,并进行了一些修饰php.net/manual/en/control-structures.foreach.php 正如我所说,我对 PHP 还很陌生,我对 JS、JQuery 和模板工具包有所了解(感谢我的工作场所),但我仍然有一个很多关于 PHP 的学习 lol
  • foreach($array as $key =&gt; $value)$value 在这种情况下不能是 list()
  • 您没有使用 PHP 5.5,这是该语法有效的地方

标签: php arrays list loops foreach


【解决方案1】:

以下代码行在 PHP 5.5 之前的版本中无效(这意味着您使用 PHP 5.5):

foreach ($gig as list($day, $month, $year, $location, $description, $event_link, $ticket_link)) {

如果您希望获取所有这些值,请使用数组语法来访问它们:

foreach ($gig as $giginfo) {
    echo $giginfo['day'];

或者使用while循环:

while (list($day, $month, $year, $location, $description, $event_link, $ticket_link) = each($gig)) {

或者使用extract()不推荐):

foreach ($gig as $giginfo) {
    extract($giginfo);

至于您的数组,您使用的语法仅在 PHP 5.4 中可用。所以你需要改用array() 语法:

<?php

$gig = array(
    array(28,12,2013,
        'The Firebug - Leicester', 
        'with more awesome bands',
        'www.facebook.com',
        'www.seetickets.com'
    ),
    array(
        19,04,2014,
        'Pi Bar - Leicester', 
        '(acts tbc)',
        'www.facebook.com',
        ''
    ),
);

?>

【讨论】:

  • 啊,好吧,我查看了我正在运行的版本,它是 5.3.24(我没有意识到有 5.5 大声笑)我现在正在尝试在 cPanel 中更新它(这是一个错误,给了我一个cageFS错误,但它正在被处理)与此同时,我用你建议的while循环替换了foreach循环,并且它有页面构建,但现在它与我的实际数组一起失败了:(“解析错误:语法错误,第 3 行 /home/public_html/php/arr_gigs.php 中出现意外的 '['”我非常感谢 John 的帮助 :)
  • 您正在使用仅在 PHP 5.4 中可用的数组语法。因此,您需要使用传统语法定义该数组。请参阅我的更新答案。
  • 干杯约翰,这些信息让我更进一步,我仍然无法从嵌套数组中提取 gig 数据,但我要玩一玩,看看我能不能弄清楚了解我如何获取信息。你可以在这里看到页面 -> fightingeviliscool.co.uk/gigs.html (在整理样式之前,我让它在功能上正常工作)
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 2023-03-30
  • 2014-01-01
  • 1970-01-01
  • 2014-09-10
  • 2011-06-24
  • 1970-01-01
  • 2013-10-15
相关资源
最近更新 更多