2011-02-02 4 views
2

Я создаю массив JSON в PHP, как это (это внутри класса):PHP JSON проблемы массива

$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 это имя класса и $ ключ идентификатор идентификатор в запросе таблицы)

$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() ...

У меня все это неправильно?

+0

Как выглядит сгенерированный JSON? Вы подтвердили, что это то же самое, что и следовало ожидать? –

+0

Мой json дает мне что-то вроде этого (1 и 2 - идентификатор $ row-> идентификатора tableID в создании массива): stdClass Object ([1] => stdClass Object ([title] => this [content] => Lorem [2] => stdClass Object ([title] => that [content] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus interdum varius urna. Donec quis turpis elit.)) –

ответ

3

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

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

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

+0

Дэвид - много спасибо, в прошлом я всегда «сериализован» и не играл с json, получил его сейчас с «правдой», –

Смежные вопросы