将未知数转换为 PHP 中的数组
Converting an unknown to an array in PHP
我有一个查询,returns 一个对象或一个基于项目数的数组。如果返回零个或一个项目,则它 returns 将项目作为对象。如果有两个或更多项目,那么它 returns 一个对象数组。
我想对查询结果执行 foreach
,但如果返回的是对象而不是数组,则会引发错误。所以我创建了一个将对象转换为数组的函数。
function to_array($unknown) {
if (count($unknown) === 0) {
$array=array($unknown);
} elseif (!is_array($unknown)) {
$array = array();
$array[0] = $unknown;
} else {
$array = $unknown;
}
return $array;
}
只需调用$query_array = to_array($query_return)
即可使用。
这是最好的方法吗?有没有更好的办法?这会造成任何问题吗?
你的方法看起来不错,但我建议你检查 $unknown
是否可 foreachable 并相应地转换它。当然,如果你不止一次这样做,那就把它放在一个函数中。
<?php
$unknown = ...; // call to API
if (!is_array($unknown) && !($unknown instanceof \Traversable)) {
$unknown = array($unknown);
}
foreach ($unknown as $item) {
// ... do things
}
I'm wanting to do a foreach on the query result, but that is throwing
an error if it is an object that is returned, rather than an array.
您的数据源似乎有些不清楚或不干净。我们谈论的是查询、对象和数组。谁知道还有什么可能,您的数据源发展得越多。因此,我会先检查数据类型并处理所有种可能性。
gettype 函数为您提供了一个很好的起点。然后你可以使用一个开关来处理所有的可能性,甚至是未来的PHP修改如下。
对于对象到数组的转换,我会使用 get_object_vars 函数而不是简单的类型转换,因为我不清楚类型转换的真正作用。但是 get_object_vars 函数有据可查。
$type = gettype ( $unknown );
switch ($type) {
case "array":
$array = $unknown;
break;
case "object":
$array = get_object_vars ( $unknown );
break;
case "boolean":
case "integer":
case "double":
case "string":
case "resource":
case "NULL":
case "unknown type":
default: throw new Exception("Unknown data type");
}
/* Do something here with $array */
我有一个查询,returns 一个对象或一个基于项目数的数组。如果返回零个或一个项目,则它 returns 将项目作为对象。如果有两个或更多项目,那么它 returns 一个对象数组。
我想对查询结果执行 foreach
,但如果返回的是对象而不是数组,则会引发错误。所以我创建了一个将对象转换为数组的函数。
function to_array($unknown) {
if (count($unknown) === 0) {
$array=array($unknown);
} elseif (!is_array($unknown)) {
$array = array();
$array[0] = $unknown;
} else {
$array = $unknown;
}
return $array;
}
只需调用$query_array = to_array($query_return)
即可使用。
这是最好的方法吗?有没有更好的办法?这会造成任何问题吗?
你的方法看起来不错,但我建议你检查 $unknown
是否可 foreachable 并相应地转换它。当然,如果你不止一次这样做,那就把它放在一个函数中。
<?php
$unknown = ...; // call to API
if (!is_array($unknown) && !($unknown instanceof \Traversable)) {
$unknown = array($unknown);
}
foreach ($unknown as $item) {
// ... do things
}
I'm wanting to do a foreach on the query result, but that is throwing an error if it is an object that is returned, rather than an array.
您的数据源似乎有些不清楚或不干净。我们谈论的是查询、对象和数组。谁知道还有什么可能,您的数据源发展得越多。因此,我会先检查数据类型并处理所有种可能性。
gettype 函数为您提供了一个很好的起点。然后你可以使用一个开关来处理所有的可能性,甚至是未来的PHP修改如下。
对于对象到数组的转换,我会使用 get_object_vars 函数而不是简单的类型转换,因为我不清楚类型转换的真正作用。但是 get_object_vars 函数有据可查。
$type = gettype ( $unknown );
switch ($type) {
case "array":
$array = $unknown;
break;
case "object":
$array = get_object_vars ( $unknown );
break;
case "boolean":
case "integer":
case "double":
case "string":
case "resource":
case "NULL":
case "unknown type":
default: throw new Exception("Unknown data type");
}
/* Do something here with $array */