I am creating a json array in PHP like this (it's inside a class):
$STH = $DBH->query("SELECT ID,title,content FROM table WHERE ID= '".$ID."' ");
$querycount = $STH->rowCount();
if($querycount!=0):
$STH->setFetchMode(PDO::FETCH_OBJ);
while( $row = $STH->fetch()) :
$thread[$row->ID]['title'] = $row->title;
$thread[$row->ID]['content'] = $row->content;
endwhile;
$this->querycount = $querycount;
$this->thread = json_encode($thread);
else:
$this->querycount = $querycount;
endif;
But I seem to get "strange" decodes the other end. I cannot actually reference the array by key's;
So far it will let me do this: (Where af_threads is the class name and $key id the ID in the table query)
$threads = new af_threads($key,$DBH);
$threads = json_decode($threads->thread);
foreach($threads as $key1=>$thread):
foreach($thread as $key2=>$val):
echo $key2;
echo $val;
endforeach;
echo '<hr />';
endforeach;
But what it will not let me do is something like this
$threads[$key]['title']
I'm not sure why. As the class builds i.e. with more rows etc. I will need to call specific rows in specific places. i.e. $threads[$key]['newrow']
, $threads[$key]['newrow2']
, and or to manipulate a row with say substr()
; etc.
Yes I know I could ju开发者_如何学Pythonst echo out an array without json, but eventually I want to add cross domain functionality with JQuery getJSON() ...
Have I got it all wrong?
By default, json_decode()
returns stdClass
, modify second line with
$threads = json_decode($threads->thread, true)
and you will get an associative array and be able to reference it by keys, $threads[$key]['title']
for example.
精彩评论