2012-08-28 141 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/>"; 
?> 

邊注:使用全局變量一樣,是不被推薦!