PHP:计算对象数组中的值

时间:2011-03-01 12:09:39

标签: php arrays

我有一个数据库类,它返回一个对象数组。我试图从这个单一查询中获取多个数据位,以防止必须运行三个查询。

我偶然发现了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

在输入这个问题时,我还想到了一个问题,草皮法律呃?那个函数能够解析多个维度吗?

5 个答案:

答案 0 :(得分:1)

我不太清楚你在说什么,但有一个函数可以计算数组元素和对象属性。

count()

因此,您无需为此目的将对象转换为数组。

答案 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));