php中json
一、json_encode() 该函数主要用来将数组和对象,转换为json式。先看一个数组转换的例子: $arr = array ( 'a' = 1 , 'b' = 2 , 'c' = 3 , 'd' = 4 , 'e' = 5 ) ; echo json_encode ( $arr ) ; 结果为 { a : 1 , b : 2 , c : 3 , d : 4 , e : 5 } 再看一个对
一、json_encode()
该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:
<code> <span>$arr</span> <span>=</span> <span>array</span> <span>(</span><span>'a'</span><span>=</span><span>></span><span>1</span><span>,</span><span>'b'</span><span>=</span><span>></span><span>2</span><span>,</span><span>'c'</span><span>=</span><span>></span><span>3</span><span>,</span><span>'d'</span><span>=</span><span>></span><span>4</span><span>,</span><span>'e'</span><span>=</span><span>></span><span>5</span><span>)</span><span>;</span> <span>echo</span> <span>json_encode<span>(</span></span><span>$arr</span><span>)</span><span>;</span> </code>Copier après la connexion
结果为
<code> <span>{</span><span>"a"</span><span>:</span><span>1</span><span>,</span><span>"b"</span><span>:</span><span>2</span><span>,</span><span>"c"</span><span>:</span><span>3</span><span>,</span><span>"d"</span><span>:</span><span>4</span><span>,</span><span>"e"</span><span>:</span><span>5</span><span>}</span> </code>Copier après la connexion
再看一个对象转换的例子:
<code> <span>$obj</span><span>-</span><span>></span><span>body</span> <span>=</span> <span>'another post'</span><span>;</span> <span>$obj</span><span>-</span><span>></span><span>id</span> <span>=</span> <span>21</span><span>;</span> <span>$obj</span><span>-</span><span>></span><span>approved</span> <span>=</span> <span>true</span><span>;</span> <span>$obj</span><span>-</span><span>></span><span>favorite_count</span> <span>=</span> <span>1</span><span>;</span> <span>$obj</span><span>-</span><span>></span><span>status</span> <span>=</span> <span>NULL</span><span>;</span> <span>echo</span> <span>json_encode<span>(</span></span><span>$obj</span><span>)</span><span>;</span> </code>Copier après la connexion
结果为
<code> <span>{</span> <span>"body"</span><span>:</span><span>"another post"</span><span>,</span> <span>"id"</span><span>:</span><span>21</span><span>,</span> <span>"approved"</span><span>:</span><span>true</span><span>,</span> <span>"favorite_count"</span><span>:</span><span>1</span><span>,</span> <span>"status"</span><span>:</span><span>null</span> <span>}</span> </code>Copier après la connexion
由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。
二、索引数组和关联数组
PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。
由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。
比如,现在有一个索引数组
<code> <span>$arr</span> <span>=</span> <span>Array</span><span>(</span><span>'one'</span><span>,</span> <span>'two'</span><span>,</span> <span>'three'</span><span>)</span><span>;</span> <span>echo</span> <span>json_encode<span>(</span></span><span>$arr</span><span>)</span><span>;</span> </code>Copier après la connexion
结果为:
<code> <span>[</span><span>"one"</span><span>,</span><span>"two"</span><span>,</span><span>"three"</span><span>]</span> </code>Copier après la connexion
如果将它改为关联数组:
<code> <span>$arr</span> <span>=</span> <span>Array</span><span>(</span><span>'1'</span><span>=</span><span>></span><span>'one'</span><span>,</span> <span>'2'</span><span>=</span><span>></span><span>'two'</span><span>,</span> <span>'3'</span><span>=</span><span>></span><span>'three'</span><span>)</span><span>;</span> <span>echo</span> <span>json_encode<span>(</span></span><span>$arr</span><span>)</span><span>;</span> </code>Copier après la connexion
结果就变了:
<code> <span>{</span><span>"1"</span><span>:</span><span>"one"</span><span>,</span><span>"2"</span><span>:</span><span>"two"</span><span>,</span><span>"3"</span><span>:</span><span>"three"</span><span>}</span> </code>Copier après la connexion
注意,数据格式从"[]"(数组)变成了"{}"(对象)。
如果你需要将"索引数组"强制转化成"对象",可以这样写
<code> <span>json_encode<span>(</span></span> <span>(</span>object<span>)</span><span>$arr</span> <span>)</span><span>;</span> </code>Copier après la connexion
或者
<code> json_encode <span>(</span> <span>$arr</span><span>,</span> <span>JSON_FORCE_OBJECT</span> <span>)</span><span>;</span> </code>Copier après la connexion
三、类(class)的转换
下面是一个PHP的类:
<code> <span>class</span> <span>Foo</span> <span>{</span> <span>const</span> <span>ERROR_CODE</span> <span>=</span> <span>'404'</span><span>;</span> <span>public</span> <span>$public_ex</span> <span>=</span> <span>'this is public'</span><span>;</span> <span>private</span> <span>$private_ex</span> <span>=</span> <span>'this is private!'</span><span>;</span> <span>protected</span> <span>$protected_ex</span> <span>=</span> <span>'this should be protected'</span><span>;</span> <span>public</span> <span>function</span> <span>getErrorCode<span>(</span></span><span>)</span> <span>{</span> <span>return</span> self<span>:</span><span>:</span><span>ERROR_CODE</span><span>;</span> <span>}</span> <span>}</span> </code>Copier après la connexion
现在,对这个类的实例进行json转换:
<code> <span>$foo</span> <span>=</span> <span>new</span> <span>Foo</span><span>;</span> <span>$foo_json</span> <span>=</span> <span>json_encode<span>(</span></span><span>$foo</span><span>)</span><span>;</span> <span>echo</span> <span>$foo_json</span><span>;</span> </code>Copier après la connexion
输出结果是
<code> <span>{</span><span>"public_ex"</span><span>:</span><span>"this is public"</span><span>}</span> </code>Copier après la connexion
可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。
四、json_decode()
该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:
<code> <span>$json</span> <span>=</span> <span>'{"foo": 12345}'</span><span>;</span> <span>$obj</span> <span>=</span> <span>json_decode<span>(</span></span><span>$json</span><span>)</span><span>;</span> <span>print</span> <span>$obj</span><span>-</span><span>></span><span>{</span><span>'foo'</span><span>}</span><span>;</span><span> // 12345 </span> </code>Copier après la connexion
通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:
<code> <span>$json</span> <span>=</span> <span>'{"a":1,"b":2,"c":3,"d":4,"e":5}'</span><span>;</span> <span>var_dump<span>(</span></span><span>json_decode<span>(</span></span><span>$json</span><span>)</span><span>)</span><span>;</span> </code>Copier après la connexion
结果就是生成一个PHP对象:
<code> <span>object<span>(</span></span>stdClass<span>)</span>#<span>1</span> <span>(</span><span>5</span><span>)</span> <span>{</span> <span>[</span><span>"a"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>1</span><span>)</span> <span>[</span><span>"b"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>2</span><span>)</span> <span>[</span><span>"c"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>3</span><span>)</span> <span>[</span><span>"d"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>4</span><span>)</span> <span>[</span><span>"e"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>5</span><span>)</span> <span>}</span> </code>Copier après la connexion
如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:
<code> <span>$json</span> <span>=</span> <span>'{"a":1,"b":2,"c":3,"d":4,"e":5}'</span><span>;</span> <span>var_dump<span>(</span></span><span>json_decode<span>(</span></span><span>$json</span><span>,</span><span>true</span><span>)</span><span>)</span><span>;</span> </code>Copier après la connexion
结果就生成了一个关联数组:
<code> <span>array</span><span>(</span><span>5</span><span>)</span> <span>{</span> <span>[</span><span>"a"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>1</span><span>)</span> <span>[</span><span>"b"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>2</span><span>)</span> <span>[</span><span>"c"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>3</span><span>)</span> <span>[</span><span>"d"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>4</span><span>)</span> <span>[</span><span>"e"</span><span>]</span> <span>=</span><span>></span> <span>int<span>(</span></span><span>5</span><span>)</span> <span>}</span> </code>Copier après la connexion
五、json_decode()的常见错误
下面三种json写法都是错的,你能看出错在哪里吗?
<code> <span>$bad_json</span> <span>=</span> <span>"{ 'bar': 'baz' }"</span><span>;</span> <span>$bad_json</span> <span>=</span> <span>'{ bar: "baz" }'</span><span>;</span> <span>$bad_json</span> <span>=</span> <span>'{ "bar": "baz", }'</span><span>;</span> </code>Copier après la connexion
对这三个字符串执行json_decode()都将返回null,并且报错。
第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。
另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
<code> <span>var_dump<span>(</span></span><span>json_decode<span>(</span></span><span>"Hello World"</span><span>)</span><span>)</span><span>;</span><span> //null</span></code>Copier après la connexion

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c
