2013-07-15 3 views
-3

Я всегда замечал, что метод json_encode получает массив в качестве аргументов. Мой вопрос мы можем использовать строку вместо массива в качестве аргументов для методаМожем ли мы передать строку json encode method в php

json_encode($array); 

Обновлено

Привет, пожалуйста, проверьте следующий код. Преобразовать строку в Джейсон

$jason = '<h3 style="font-size:15px;">'; 
    foreach($employee as $key=> $value){ 
     $jason .= '<table><tbody>'; 
     $jason .= '<tr><td style="width:400px;padding:5px;padding:10px;"></td><td style="width:300px;padding:5px;"><img style="width:132px; height:175px;" src="'.$image_folder.$value->prfil_img .'" /></td></tr>'; 
    //$retval .= '<a href="'. $store_url . 'product_info.php?products_id=' . $product_id . '"><img src="' . $image_folder . $product_image . '" /></a><br />'; 

     $jason .= '<tr><td style="width:30%;font-size:14px;paddig:10px;">'.'Name:'.'</td>'.'<td style="font-size:14px;paddig:5px;">'.$value->first_name.'&nbsp;&nbsp;'.$value->last_name.'</td></tr>'; 
     $jason .= '<tr><td style="width:30%;font-size:14px;paddig:10px;">'.'Email:'.'</td>'.'<td style="font-size:14px;paddig:5px;">'.$value->email;'</td></tr>'; 
     $jason .= '<tr><td style="width:30%;font-size:14px;paddig:10px;">'.'Tel Ext:'.'</td>'.'<td style="font-size:14px;paddig:5px;">'.$value->extension;'</td></tr>'; 
     $jason .= '<tr><td style="width:30%;font-size:14px;paddig:10px;">'.'Account:'.'</td>'.'<td style="font-size:14px;paddig:5px;">'.$value->account;'</td></tr>'; 
     $jason .= '</table></tbody>'; 
     // echo '</br>';echo '</br>'; 

    } 
     $jason .= '</h3>'; 

    echo json_encode($jason); 

Но тогда я получаю следующее из положить

enter image description here

Но если я не использую Джейсон закодировать я получаю результаты ясно. (без нарушения синтаксиса элемента html). Значит, у кого-нибудь есть идея по этому поводу? Где я совершил ошибку?

Как я использую ajax в wordpress, мне нужно использовать кодированные данные jason.

Пожалуйста, не то, что, когда я применяю Джейсон закодировать к следующему я получаю следующее из положить

$jason = '<tr><td style="width:90%;font-size:14px;">'; 
$jason .= 'val 2'; 
echo json_encode($jason) ; 

Out пут «Вал 2» Поэтому, я думаю, что формат данные Джейсона.

ответ

2

Ну, это говорит mixed, я уверен, что строка отлично работает.

И смотрите! It does!

3

Да, вы можете. documentation показывает, что mixed value может использоваться как вход.

3

Если вы обратите внимание на PHP инструкции для json_encode() он говорит, что это:

Примечание:

Как кодер ссылки JSON, json_encode() будет генерировать JSON, что простого значение (то есть , ни объект, ни массив), если задано значение string, integer, float или boolean в качестве входного значения. В то время как большинство декодеров будут принимать эти значения как действительные JSON, некоторые могут не совпадать, так как спецификация неоднозначна в этой точке.

Таким образом, вы можете передать строковое значение, и оно будет кодировать его, просто не ожидайте, что это значение будет универсально декодировано. В зависимости от вашего использования вам может быть лучше разместить его в оболочке массива.

Кроме того, эта функция не просто принимает массивы, но также правильно кодирует объекты (или другие простые значения, как указано).

+2

+1, для 'универсально прочитанного'. Большую часть времени он помещается непосредственно в код javascript или читается из '$ .JSON', но это не удивительно, если он не читает пользовательский класс или объект. –

+0

спасибо, это более ясный ответ, я заметил много времени, массив используется в кодировании. – wordpressm

+0

Я видел его наиболее используемым в ajax, так как для какого типа данных jQuery или какой-либо другой структуры вы могли бы использовать оболочку '[]'. Тем не менее, если вы посмотрите на ответ OrangePill, это также является распространенным способом включения json-кодированной информации. Если вы решите включить его таким образом, тогда проблем нет. 'var a =" hello world ";' –

1

Да

$a = '"Hello World"'; 

    echo json_encode ($a); 

    // outputs "\"Hello World\"" with the quotes 

Примечания это будет правильно избежать символов жгутов строки, чтобы вы могли сказать

<script> 
     var a = <?php echo json_encode($a); ?>; 
    </script> 

Не имея два беспокоиться о выполнении вылетающей себя.

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