Ale*_*drw 99 php arrays stdclass
我做了以下数组:
$clasa = array(
'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用stdClass()将这个数组转换为一个对象,我是一个PHP初学者,一个简单的例子会非常有帮助,我试过寻找类似的问题,但答案很复杂,超越了我对基本类和对象的理解.
Ekr*_*que 201
您只需添加此代码即可
$clasa = (object) array(
'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);
Run Code Online (Sandbox Code Playgroud)
如果你想看到这个stdClass对象只是调用它
print_r($clasa);
Run Code Online (Sandbox Code Playgroud)
如果要将数组转换为对象代码即可
$arr = array('a'=>'apple','b'=>'ball');
$arr = (object) $arr;
Run Code Online (Sandbox Code Playgroud)
您不需要使用stdClass.它会自动转换为stdClass
h2o*_*ooo 55
快速而肮脏的方式是使用json_encode
并将json_decode
整个数组(包括子元素)转换为对象.
$clasa = json_decode(json_encode($clasa)); //Turn it into an object
Run Code Online (Sandbox Code Playgroud)
可以使用相同的方法将对象转换为数组.只需添加, true
以json_decode
返回关联的数组:
$clasa = json_decode(json_encode($clasa), true); //Turn it into an array
Run Code Online (Sandbox Code Playgroud)
另一种方式(没有脏)只是一个递归函数:
function convertToObject($array) {
$object = new stdClass();
foreach ($array as $key => $value) {
if (is_array($value)) {
$value = convertToObject($value);
}
$object->$key = $value;
}
return $object;
}
Run Code Online (Sandbox Code Playgroud)
或完整代码:
<?php
function convertToObject($array) {
$object = new stdClass();
foreach ($array as $key => $value) {
if (is_array($value)) {
$value = convertToObject($value);
}
$object->$key = $value;
}
return $object;
}
$clasa = array(
'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);
$obj = convertToObject($clasa);
print_r($obj);
?>
Run Code Online (Sandbox Code Playgroud)
输出(注意没有数组 - 只有stdClass
):
stdClass Object
(
[e1] => stdClass Object
(
[nume] => Nitu
[prenume] => Andrei
[sex] => m
[varsta] => 23
)
[e2] => stdClass Object
(
[nume] => Nae
[prenume] => Ionel
[sex] => m
[varsta] => 27
)
[e3] => stdClass Object
(
[nume] => Noman
[prenume] => Alice
[sex] => f
[varsta] => 22
)
[e4] => stdClass Object
(
[nume] => Geangos
[prenume] => Bogdan
[sex] => m
[varsta] => 23
)
[e5] => stdClass Object
(
[nume] => Vasile
[prenume] => Mihai
[sex] => m
[varsta] => 25
)
)
Run Code Online (Sandbox Code Playgroud)
所以你要参考它$obj->e5->nume
.
小智 16
如果你想将整个数组递归转换为Object类型(stdClass),那么下面是最好的方法,它不是耗时或内存不足,特别是当你想要进行递归(多级)转换时,与编写你的自己的功能.
$array_object = json_decode(json_encode($array));
Run Code Online (Sandbox Code Playgroud)
小智 7
要使用stdClass将数组转换为对象,只需添加(object)
到数组u declare.
EX:
echo $array['value'];
echo $object->value;
Run Code Online (Sandbox Code Playgroud)
将对象转换为数组
$obj = (object)$array;
Run Code Online (Sandbox Code Playgroud)
将数组转换为对象
$arr = (array)$object
Run Code Online (Sandbox Code Playgroud)
使用这些方法,您可以非常轻松地在数组和对象之间切换.
另一种方法是使用json
$object = json_decode(json_encode($array), FALSE);
Run Code Online (Sandbox Code Playgroud)
但这是一种内存密集程度更高的方法,并且不受PHP <= 5.1版本的支持
归档时间: |
|
查看次数: |
152405 次 |
最近记录: |