如何在 PHP 中把一个数组转换为一个对象
Minahil Noor
2023年1月30日
本文介绍了在 PHP 中把数组转换为对象的方法,包括类型转换、json_decode(函数)和 json_encode(函数)。
- 使用类型转换
- 使用
json_decode
和json_encode()
函数
在 PHP 中使用类型转换将一个数组转换为一个对象
类型转换有助于转换一个变量的数据类型。我们可以使用类型转换将一个整数转换为浮点、字符串等。现在,我们将使用类型转换在 PHP 中把一个数组转换为一个对象。将数组转换为对象的正确方法如下。
$variableName = (object)$arrayName;
下面的程序显示了我们如何使用类型转换法将一个数组转换为一个对象。
<?php
$array = array("Rose",
"Lili",
"",
"Jasmine",
"Hibiscus",
"Tulip",
"Sun Flower",
"",
"Daffodil",
"Daisy");
$object= (object)$array;
echo("The object is \n");
var_dump($object);
?>
输出:
The object is
object(stdClass)#1 (10) {
[0]=>
string(4) "Rose"
[1]=>
string(4) "Lili"
[2]=>
string(0) ""
[3]=>
string(7) "Jasmine"
[4]=>
string(8) "Hibiscus"
[5]=>
string(5) "Tulip"
[6]=>
string(10) "Sun Flower"
[7]=>
string(0) ""
[8]=>
string(8) "Daffodil"
[9]=>
string(5) "Daisy"
}
在 PHP 中使用 json_encode()
和 json_decode()
函数将一个数组转换为一个对象
在 PHP 中,我们可以使用 json_encode()
和 json_decode()
函数将一个数组转换为一个对象。json_encode()
函数将数组转换为 JSON 字符串。然后我们将使用 json_decode()
函数将这个字符串转换为对象。
正确使用 json_encode()
函数的语法如下。
json_encode($variable, $option, $depth)
函数 json_encode()
接受三个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$variable |
强制 | 它是我们要转换为 JSON 字符串的值 |
$option |
可选 | 它是由多个常数组成的位掩码。你可以检查这些常量这里。 |
$depth |
可选 | 这是深度,应大于零。 |
正确使用 json_decode()
函数的语法如下。
json_decode($jsonString, $assoc, $depth, $options)
函数 json_decode()
接受四个参数。其详细参数如下
参数 | 说明 | |
---|---|---|
$jsonString |
强制 | 它是我们要转换为对象的 JSON 字符串 |
$assoc |
可选 | 它是一个布尔变量。如果设置为 TRUE,则以关联数组的形式返回对象。 |
$depth |
可选 | 这是深度,应该大于零。 |
$options |
可选 | 它是 JSON_OBJECT_AS_ARRAY、JSON_BIGINT_AS_STRING、、JSON_THROW_ON_ERROR 的位掩码 |
使用这两个函数将数组转换为对象的程序如下。
<?php
$array = array("Rose","Lili","Jasmine","Hibiscus","Tulip","Sun Flower","Daffodil","Daisy");
$object = json_encode($array);
$object1 = json_decode($object);
echo("The object is:\n");
var_dump($object1);
?>
输出:
The object is:
array(8) {
[0]=>
string(4) "Rose"
[1]=>
string(4) "Lili"
[2]=>
string(7) "Jasmine"
[3]=>
string(8) "Hibiscus"
[4]=>
string(5) "Tulip"
[5]=>
string(10) "Sun Flower"
[6]=>
string(8) "Daffodil"
[7]=>
string(5) "Daisy"
}