2010-09-05 25 views
1

我有一個複雜的JSON數組我想針對特定行/字符串,如果存在,則添加一個小桌子,以網頁...靶向JSON數組的特定部分,如果存在的話創建表

這是數組

{ 
"coastalWarnings":[{ 
    "loc":"ABEL", 
    "warn":"GALE" 
    },{ 
    "loc":"CASTLEPOINT", 
    "warn":"STORM" 
    },{ 
    "loc":"CHALMERS", 
    "warn":"GALE" 
    },{ 
    "loc":"CHATHAM ISLANDS", 
    "warn":"GALE" 
    },{ 
    "loc":"CONWAY", 
    "warn":"STORM" 
    },{ 
    "loc":"COOK", 
    "warn":"STORM" 
    },{ 
    "loc":"FOVEAUX", 
    "warn":"GALE" 
    },{ 
    "loc":"GREY", 
    "warn":"GALE" 
    },{ 
    "loc":"MILFORD", 
    "warn":"STORM" 
    },{ 
    "loc":"PORTLAND", 
    "warn":"GALE" 
    },{ 
    "loc":"PUYSEGUR", 
    "warn":"STORM" 
    },{ 
    "loc":"RAGLAN", 
    "warn":"GALE" 
    },{ 
    "loc":"RANGITATA", 
    "warn":"GALE" 
    },{ 
    "loc":"STEPHENS", 
    "warn":"GALE" 
    } 
    ], 
"isAdvisory":true, 
"isOutlook":true, 
"isVhf":true, 
"isWatch":true, 
"liftedWarnings":[ 
    ], 
"oceanicWarnings":[{ 
    "loc":"FORTIES", 
    "warn":"GALE" 
    },{ 
    "loc":"PACIFIC", 
    "warn":"GALE" 
    },{ 
    "iceAccretion":true, 
    "loc":"SOUTHERN", 
    "warn":"GALE" 
    },{ 
    "loc":"SUBTROPIC", 
    "warn":"GALE" 
    } 
    ], 
"roadSnowWarnings":[ 
    ], 
"severeWarnings":[{ 
    "loc":"BULLER", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"CANTERBURY", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"FIORDLAND", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"HAWKES BAY", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"MANAWATU", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"MARLBOROUGH", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"NELSON", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"OTAGO", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"SOUTHLAND", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"TAIHAPE", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"TARANAKI", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"TAUMARUNUI", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"TAUPO", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"WAIRARAPA", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"WAITOMO", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"WANGANUI", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"WELLINGTON", 
    "warn":["ISSUE" 
    ] 
    },{ 
    "loc":"WESTLAND", 
    "warn":["ISSUE" 
    ] 
    } 
    ], 
"thunderstormWarnings":[ 
    ] 
} 

正如你可以看到陣列被分成部分 -

"coastalWarnings" 
"liftedWarnings" 
"oceanicWarnings" 
"roadSnowWarnings" 
"severeWarnings" 
"thunderstormWarnings" 

我希望爲目標「severeWarnings」,特別是「祿」:「坎特伯雷」,這顯示秒 -

},{ 
    "loc":"CANTERBURY", 
    "warn":["ISSUE" 
    ] 
    },{ 

所以當存在於數組就會引發表如

<table align="center" width="100%" bgcolor="red"> 
    <tr><td><strong>Severe Weather Warning in effect for CANTERBURY</strong></td></tr> 
</table> 

最大的問題是數組改變了所有的時間,所以需要針對我想通過搜索特定的單詞或措辭除非它可以可靠地分解成部分。

能夠像這項工作一樣簡單?

<? 
$table = <table align="center" width="100%" bgcolor="red"><tr><td><strong>Severe Weather Warning in effect for CANTERBURY</strong></td></tr></table>; 

$file = file_get_contents("filename.ext"); 
if(!strpos($file, ""loc":"CANTERBURY"")) { 
echo $table; 
} 
? 

不確定如何去了解這一點,我的PHP技能相當有限的,所以如果你會這麼好心給我一個腳本或就如何實現這一步一步,我會永遠如此欣賞。

在此先感謝。

+0

你運行PHP的版本?你不能使用json_decode($ json)並使用數組嗎? – Alex 2010-09-05 05:12:17

+0

使用最新版本的PHP,數組的動態變化每天都不能真正針對特定的字符串編號,否則將很容易做到。 – Gary 2010-09-05 05:24:50

回答

1

亞歷克斯建議,使用json_decode

$s = getData(); // returning the string from the question 
$data = json_decode($s, true); 

foreach($data['severeWarnings'] as $cw) { 
    if ('CANTERBURY'===$cw['loc']) { 
    foreach($cw['warn'] as $msg) { 
     echo "-- ", $msg, " --\n"; 
    } 
    } 
} 

打印-- ISSUE --

+0

我認爲我可以改變echo「 - 」,$ msg,「 - \ n」;在我的第一篇文章中顯示錶格? – Gary 2010-09-05 09:44:45

+0

等類似的東西,以----- <表ALIGN = 「中心」 寬度= 「100%」 BGCOLOR = 「紅色」>實際上 ​​惡劣天氣警告爲CANTERBURY Gary 2010-09-05 09:45:29

+0

或更好仍顯示一個更容易腳本的橫幅? – Gary 2010-09-06 04:52:18