我有一个数据库类,它返回一个对象数组。我试图从这个单一查询中获取多个数据位,以防止必须运行三个查询。
我偶然发现了array_count_values()
[http://uk3.php.net/manual/en/function.array-count-values.php],它非常适合捕捉有关我可以使用的结果集的各种数据。虽然我无法弄清楚如何将所有第二个维度投射到数组中,而不必只是通过整个回归来预测,我觉得这有点不好。
有没有人有任何想法如何将我的对象数组作为一个整体转换为数组,以允许这个游戏更改功能来实现它的魔力?
Array
(
[0] => stdClass Object
(
[message_id] => 23185
[from_profile] => 3165
[to_profile] => 962
[parent_message_id] => 17111
[date_sent] => 2011-02-23 05:48:25
[subject] => RE: hi
)
// etc
在输入这个问题时,我还想到了一个问题,草皮法律呃?那个函数能够解析多个维度吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
由于您只想更改第一个维度,因此可以使用array_walk
$dbResultsArray = // db results here
array_walk($dbResultsArray, function(&$elem) { $elem = (array)$elem; });
$dbResultsArray
通过引用传递,因此array_walk
运行后$dbResultsArray
已经更新。
我正在使用需要php 5.3+的闭包,但你可以在旧版本中使用create_function。
答案 2 :(得分:0)
对对象数组执行for循环,并将它们标记为(array)
并将它们分配回来,
你不需要进一步嵌套,它只会被指出最高级别。
例如
$newArr = array();
foreach($myObjArr as $t){
$arr = (array)$t;
$newArr[] = $arr;
}
答案 3 :(得分:0)
这可能会指出你正确的方向;
http://www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass
就多重尺寸而言,我不确定那个。希望上面的内容很有用。
答案 4 :(得分:0)
您可能会尝试
$result = array_count_values(array_map(function ($message) {
return $message->id;
}, $messageArray));