解析错误:语法错误,第169行意外'['

时间:2013-10-14 18:55:16

标签: php wordpress

我一直在为我的worpress网站脱机处理此代码错误。

  

解析错误:语法错误,在第169行的C:\ Users \ guyzer \ Desktop \ InstantWP_4.3 \ iwpserver \ htdocs \ wordpress \ wp-content \ themes \ thesis_182 \ custom \ custom_functions.php中出现意外'[' / p>

行代码错误行169: $post_date = explode(" ", $post_event)[0];

在实际网站上,网站正在运行,但是当我使用复制器复制实时网站并转移到离线或其他服务器时,始终会发生此错误,从而导致网站关闭。 我希望你能帮我解决这个错误!

以下是错误的完整代码:     

    <div class="page">

        <div class="tab-sidebars">
            <h1><a href="<?php echo get_site_url()?>/gigs">GIGS</a></h1>
            <h3><a href="<?php echo get_site_url()?>/gigs/today">&#8226; Today</a></h3>
            <h3><a href="<?php echo get_site_url()?>/gigs/weeks">&#8226; Weeks</a></h3>
            <h3><a href="<?php echo get_site_url()?>/gigs/month">&#8226; Month</a></h3>
        </div>

        <div id="gigs-carousel" class="post-container">

            <a class="buttons prev" href="#"></a>

            <div class="viewport">
                <ul class="overview" style="width:9999px !important">
                <?php
                global $post;
                $today = getdate();
                $args = array(  'category_name' => 'gigs', 
                                'post_type' => 'post', 
                                'meta_key' => custom_event_date, 
                                'orderby' => meta_value, 
                                'order' => 'ASC', 
                                'showposts' => '99'
                            );

                $the_query = new WP_Query($args);
                while($the_query->have_posts()) : 
                    $the_query->the_post();
                    $post_id = $post->ID;
                    $post_event = get_post_meta($post_id, 'custom_event_date', true);
                    $post_date = explode(" ", $post_event)[0];
                    $post_time = explode(" ", $post_event)[1];
                    $post_day = explode("-", $post_date)[2];
                    $post_permalink = get_permalink($post_id);
                    $thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post_id), 'thumbnail' );

                    $date_now = date("Y-m-d H:i");
                    $date_compare = $post_event;
                    $date_result =  strtotime($date_compare) - strtotime($date_now);

                    $current_month = date("m");
                    $event_month = explode("-", $post_date)[1];

                    if($date_result > 0 && $current_month == $event_month) :
                ?>
                    <li style="background-image:url(<?php echo $thumbnail_src[0]?>)">
                        <div class='post-day'><?php echo $post_day?></div>
                        <a class='post-item' href="<?php echo $post_permalink?>" >
                            <div class='post-title'><?php echo get_the_title();?></div>
                            <div class='post-sub'><?php echo convert_time($post_time)?></div>
                            <div class='post-excerpt'><?php the_excerpt(); ?></div>
                        </a>
                    </li>

                <?php
                    endif;
                endwhile;
                wp_reset_postdata();
                ?>
                </ul>
            </div><!-- .viewport -->


            <a class="buttons next" href="#"></a>

        </div><!-- #gigs-carousel -->

    </div>

4 个答案:

答案 0 :(得分:5)

$post_date = explode(" ", $post_event)[0];

您可能正在尝试在不支持它的PHP版本上使用数组解除引用功能。它仅适用于PHP 5.4+版本。

从PHP手册:

  

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。

正如它所说,你将不得不在旧版本的PHP上使用临时变量:

$temp = explode(" ", $post_event);
$post_date = $temp[0];

同样更改所有出现的事项。

或者,您可以使用list()在一行中执行此操作(但稍微降低了可读性):

也就是说,您可以替换:

$post_date = explode(" ", $post_event)[0];
$post_time = explode(" ", $post_event)[1];

用这个:

list($post_date, $post_time) = explode(" ", $post_event);

但是,使用临时变量并手动分配值更加整洁和可读。

答案 1 :(得分:1)

来自PHP docs

  

从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。

您最有可能在机器上使用PHP 5.3来获取错误。

答案 2 :(得分:1)

我相信你需要PHP&gt; = 5.4:

explode(" ", $post_event)[0]

尝试:

list($post_date, $post_time)   = explode(" ", $post_event);
list($junk, $junk2, $post_day) = explode("-", $post_date);

答案 3 :(得分:0)

只需将$ post_event爆炸到它自己的数组中然后对其采取行动。

$post_event = get_post_meta($post_id, 'custom_event_date', true);
$post_dates = explode(" ", $post_event); 
$post_date = $post_dates[0];
$post_time = $post_dates[1];
$post_day = $post_dates[2];