проблемы с массивом php json - PullRequest
2 голосов
/ 02 февраля 2011

Я создаю массив json в PHP следующим образом (он внутри класса):

$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;

Но я, кажется, получаю "странные" декодирования на другом конце.На самом деле я не могу ссылаться на массив по ключам;

Пока это позволит мне сделать это: (Где af_threads - имя класса и $ key id - идентификатор в запросе таблицы)

$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;

Но то, что он не позволит мне сделать, это что-то вроде этого

$threads[$key]['title']

Я не уверен почему.Поскольку класс строится, то есть с большим количеством строк и т. Д., Мне нужно будет вызывать определенные строки в определенных местах.то есть $threads[$key]['newrow'], $threads[$key]['newrow2'] и / или для манипулирования строкой, скажем, substr();и т. д.

Да, я знаю, что мог бы просто выводить массив без json, но в конечном итоге я хочу добавить междоменную функциональность с помощью JQuery getJSON () ...

Я все понял неправильно

1 Ответ

3 голосов
/ 02 февраля 2011

По умолчанию json_decode() возвращает stdClass, измените вторую строку с помощью

$threads = json_decode($threads->thread, true)

, и вы получите ассоциативный массив и сможете ссылаться на него по ключам, например $threads[$key]['title'].

...