2012-05-09 76 views
0

第一次伊夫張貼在這裏..整個PHP數組爲可變...或類似的東西

因此,進出口新的PHP,MySQL和JSON和林有一些問題,我可能只是接近中存在的問題不正確的方式,所以讓我知道你的想法。

基本上有一個網站,我試圖做的是有一些信息位於另一臺服務器上,我用JSON獲取該信息。

下面是代碼:

//Start of JSON Main Content Fetch + Main Content Render 
//JSON send_recv of menu array. Assign results to $main_content_b_render 
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE)); 


//Renders menu from JSON results. 
function render_main_content($main_content_fetch) 
{ 

//Start of processing $menu_result 
$main_content_b_render = $main_content_fetch['content']; 
print_r($main_content_fetch); 
    } 
    render_main_content($main_content_fetch['results']); 
    ?> 

我實際上可以從其他服務器得到的是以下幾點:

Array ([id] => 17 [name] => Accessories [reference] => [content] => Array ([0] => Array ([type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb) [1] => Array ([type] => Image [align] => Left [image] => http://URL.../image/43/webcontent/accshop11.jpg [thumb] => http://URL....com.au/image/thumb/100x100/43/webcontent/accshop11.jpg [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accshop1.jpg))) 

我可以指定數組值的變量,但它只會分配第一個,例如:

如果我把這個功能和回顯出來 $ id = $ main_content_fetch ['content']; echo $ id;

我回來的是'數組',我真正想要的是'BLAH BLAH BLAH TXT TXT TXT',它位於後面的返回信息中,實際上我們位於最後一組括號中的所有東西...

([type] => Heading1 [content] => BLAH BLAH BLAH TXT TXT TXT [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accblurb)[1] => Array([type] => Image [align] => Left [image] =>http://URL.../image/43/webcontent/accshop11.jpg [thumb] =>http://URL....com.au/image/thumb/100x100/43/webcontent/accshop11.jpg [scope] => DetailAndThumb [active] => 1 [reference] => [name] => accshop1。 jpg)

我想要做的就是能夠基本上把我找回的所有東西都分配給一個變量,因爲它是。因爲我認爲我能夠輕鬆地選擇我想要的東西..我不知道有任何其他方式可以做到這一點:/

對不起,如果它有點模糊,不是很好解釋自己,但我希望有人能夠鍛鍊我正在談論和幫助的事情。

+0

你的意思是你想創建比方說,一個$ id變量,一個$ name變量等? – Jim

+0

'extract($ main_content_fetch)' – Esailija

回答

0

對不起,只是想通了你有嵌套數組,爲什麼不通過$ main_content_fetch [「content」] [0] [「content」]來訪問所需的項目? 無論如何,通過print_r($ arr,TRUE),您可以打印實際項目並查看您正在處理的數組的結構。

如果我理解正確的你,爲了得到BLA BLA BLA文本你的代碼應該是這樣的:

//Start of JSON Main Content Fetch + Main Content Render 
//JSON send_recv of menu array. Assign results to $main_content_b_render 
$main_content_fetch=send_recv("menu", array("id" => "17", "fetchContent" => TRUE)); 


//Renders menu from JSON results. 
function render_main_content($main_content_fetch) 
{ 
    //Start of processing $menu_result 
    $main_content_b_render = $main_content_fetch['content']; 

    //return the second level "content" 
    return $main_content_b_render[0]['content']; 
} 

$content = render_main_content($main_content_fetch['results']); 
print $content; 
?> 
+0

忘記了[0]索引... –

+0

很好!完美的作品。我也只是想出了我是一個白癡..我可以剛剛完成$ main_content_b_render = print_r($ main_content_fetch);它會做我想做的,但你的建議更好。 – user1384265

0

您可以使用類似

foreach (array_expression as $key => $value) { 
    // TODO - probably need a recursive version 
    $$key = $value; 
} 

當遍歷數組,這句話可以讓你在代碼中創建新的變量。

但是,通常不應該依賴從其他服務器獲得的輸出格式。我的建議是,明確提取您從輸入需要的信息,而只是把它當作是在其導入。

因此,例如,你會做

$id = input['id']; 

然後,您可以檢查,如果一切正確分配並捕獲任何錯誤。

1

這是你的功能。我只是用返回來替換print_r

function render_main_content($main_content_fetch) 
{ 

//Start of processing $menu_result 
$main_content_b_render = $main_content_fetch['content']; 
return $main_content_fetch; 
} 

讓我們說你可以像這樣調用這個函數。現在你可以用這種方式分配單個變量的陣列

$data = render_main_content($parameter); 
$id = $data['id']; 
$name = $data['name']; 
...... 

希望這可以幫助你。所有你需要的是將數組變量與索引分配給你想要的變量。

+0

我嘗試了你的建議,但我只返回'數組',所以當我嘗試時:$ data_id = main_content_fetch ['content'];它會返回'數組',這是正確的,因爲它分配給內容的第一件事,但我想'BLAH BLAH BLAH TXT TXT TXT'也被設置爲'內容'但不會被返回。是因爲它在()中嗎? – user1384265

+0

得到你的問題...在內容的情況下,你需要以這種方式訪問​​..以這種方式管理你的數組.. $ type1 = $ data ['reference'] ['content'] ['0'] ['type 「];同樣對於heading1 $ heading1 = $ data ['reference'] ['content'] [0] ['heading1'];您可以使用循環將內容索引更改爲0後進一步更改爲1,2等。 – Anwar

-1

首先使用的print_r($改編,TRUE)打印數組時調試,這將幫助你很多:-)(不要忘記真正的旗幟!)。 您可以像訪問一樣訪問數組中的任何項目,但是看起來您正在打印$ main_content_fetch而不是$ main_content_b_render?

0

您可以使用下面的php代碼解決此問題

$ value){$$ key = $ value; } //或.... 的foreach($用戶爲$密鑰=> $值){$ {$鍵} = $值; } ?>
相關問題