【发布时间】:2013-08-24 15:31:28
【问题描述】:
比如说,我用simplexml_load_file() 加载了一些东西,但我想要输出
成为一个数组而不是一个对象。
或者,假设我有一个动态值,它有时是一个字符串,有时是一个数组, 有时是一个对象(即我不知道输入是什么,但我想要输出 始终是一个数组,无论如何)。
确保我拥有的任何值作为数组返回给我的最佳方法是什么?
【问题讨论】:
标签: php arrays object type-conversion
比如说,我用simplexml_load_file() 加载了一些东西,但我想要输出
成为一个数组而不是一个对象。
或者,假设我有一个动态值,它有时是一个字符串,有时是一个数组, 有时是一个对象(即我不知道输入是什么,但我想要输出 始终是一个数组,无论如何)。
确保我拥有的任何值作为数组返回给我的最佳方法是什么?
【问题讨论】:
标签: php arrays object type-conversion
这是我见过的最好的方法。
/**
* Convert any string, number, object, etc, to an array.
*
* @param (mixed) $input
* The value to be converted into an array.
*
* @return (array)
* The original input as an array. If the input value is an empty string or empty
* array, the return value will be an empty array.
*/
function arrayify($input) {
// Zero means empty, so make sure not to include actual zeros as being "empty"
// since the desired output might be array(0)
if (empty($input) && $input !== 0) {
// Empty in, empty (array) out.
return array();
}
return unserialize(serialize(json_decode(json_encode((array) $input), 1)));
}
我希望他们能把它(或它的派生词)做成一个核心 PHP 函数,但因为我没有 认为这很可能我认为我至少会在这里分享它。任何反馈或 欢迎改进(假设这不违反规则)。 ;)
【讨论】:
或者你可以使用 json_decode 和 foreach 循环
$result = json_decode(XXX);
foreach ($result as $data) {
echo $data->arr1;
echo $data->arr1->arr2;
...
...
}
【讨论】:
$data->arr1 不是一个数组...仍然是一个对象。