2012-08-28 102 views
0

抱歉无法构建更好的标题。 因此,这里的问题 我里面的functions.phpPHP全局变量显示空循环的第一次迭代

function show_news(){ 
$id_counter = 1; 
$json_news = array(
     "id" => 0, 
     "title" => "" 
    ); 
$json_o = json_decode(file_get_contents(JSON_DATA_FOLDER.'news.json')); 
foreach ($json_o as $id => $news_category) 
{ 
    echo '<h2>'.$id.'<h2>'; 
    foreach ($news_category as $news) 
    { 
     if(IsNullOrEmptyString($news->id)){$json_news['id'] = $id_counter; $id_counter++;} 
     else{$json_news['id']=$news->id;} 
     if(!IsNullOrEmptyString($news->title)){$json_news['title']=$news->title;} 
     var_dump($json_news); 
     echo "<br/>-------<br/>"; 
     include('news-layout.php'); 
    } 
} 
} 

我读一个JSON文件和我的价值到一个数组分配每个元素的功能。 然后我包含'news-layout.php'。出于测试目的,我只是保持这3行代码“新闻layout.php中”内部

<?php 
global $json_news; 
var_dump($json_news); 
echo"<br/>=======================<hr/>"; 
?> 

所以,我做我的函数内部以及包含页面上的var_dump。但是我得到了奇怪的结果。一切正常,除了包含页面上的var_dump($ json_news)在循环的第一次迭代中显示NULL! 下面是输出

todays_specials 
array(2) { ["id"]=> int(1) ["title"]=> string(26) "Okie Since I have to do it" } 
------- 
NULL 
======================= 
array(2) { ["id"]=> int(2) ["title"]=> string(16) "Vegetable Samosa" } 
------- 
array(2) { ["id"]=> int(2) ["title"]=> string(16) "Vegetable Samosa" } 
======================= 
array(2) { ["id"]=> int(3) ["title"]=> string(16) "Vegetable Pakora" } 
------- 
array(2) { ["id"]=> int(3) ["title"]=> string(16) "Vegetable Pakora" } 
======================= 

你可以看到奇怪的NULL到他那里。 任何人都可以解释发生了什么或如何解决它?

+0

你的json文件是什么样的? – Asciiom

+0

我应该在这里发布我的json文件的内容吗?它不是很多,但我仍然认为这是没有问题的json文件,因为var_dump里面的functions.php工作正常,但同样里面news-layout.php显示NULL – webdwall

回答

0

您的$ json_news var首先是函数文件的局部变量。然后包含布局文件,并创建全局$ json_news var,然后使用全局。在你的函数文件中将它设置为全局,并删除布局文件中的变量声明,你应该很好!

像这样:

function show_news(){ 
    $id_counter = 1; 
    global $json_news = array(
     "id" => 0, 
     "title" => "" 
    ); 
    $json_o = json_decode(file_get_contents(JSON_DATA_FOLDER.'news.json')); 
    foreach ($json_o as $id => $news_category){ 
     echo '<h2>'.$id.'<h2>'; 
     foreach ($news_category as $news){ 
      if(IsNullOrEmptyString($news->id)){ 
       $json_news['id'] = $id_counter; $id_counter++; 
      }else{ 
       $json_news['id']=$news->id; 
      } 
      if(!IsNullOrEmptyString($news->title)){ 
       $json_news['title']=$news->title; 
      } 
      var_dump($json_news); 
      echo "<br/>-------<br/>"; 
      include('news-layout.php'); 
     } 
    } 
} 

'新闻layout.php中'

<?php 
var_dump($json_news); 
echo"<br/>=======================<hr/>"; 
?> 

边注:使用全局变量一样,是不被推荐!