如何在foreach循环中调用函数并避免重新声明错误

时间:2015-05-01 20:22:34

标签: php foreach

  

致命错误:无法重新声明short_count()(之前声明为   below-code:22)   在   below-code   第20行

<?php
require_once( './wp-blog-header.php' ); 
query_posts('&showposts=-1');

    if(have_posts()) {

        while(have_posts()) : the_post();

            $prmlks = '"'. get_the_permalink(). '",';
            $links = array( $prmlks );
            foreach ($links as $items) {
                $json_data = get_transient( 'cache_'. $id .'_tr' );
                if ($json_data === false) {
                    $id = get_the_ID();
                    $json = file_get_contents( 'http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls=' . $items . '&pretty=1' );
                    $json_data = json_decode($json, true);
                    set_transient( 'cache_'. $id .'_tr', $json_data, 3600 );
                }

                function short_count() {

                    $num = $json_data[0]['total_count'];
                    if(empty ($num) ) {
                        return 'n/a';
                    } else {
                    if( $num < 1000 ) return $num;
                    $x = round($num);
                    $x_number_format = number_format($x);
                    $x_array = explode(',', $x_number_format);
                    $x_parts = array('k', 'm', 'b', 't');
                    $x_count_parts = count($x_array) - 1;
                    $x_display = $x;
                    $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : '');
                    $x_display .= $x_parts[$x_count_parts - 1];
                    return  $x_display;
                    }

                }


                $short_count = short_count();
                echo $short_count;

}
        endwhile;

    }

?>

问题是:如何在foreach循环内调用函数?

我希望将函数保留在foreach循环中,以便获取动态变量..

1 个答案:

答案 0 :(得分:1)

将您的功能移出循环。你只需要声明一次,而不是多次,所以它不需要在那个循环中。您可以将功能移到代码顶部(require_once之后)甚至代码底部(?>之前),然后您就不会遇到此重新声明问题。您可以在循环内部调用该函数。