PHP通过key =>值将对象数组拆分为多个数组

时间:2014-09-21 17:27:41

标签: php arrays object

我想通过key => value将对象数组拆分成多个数组,但我无法弄清楚如何。

我有一个这样的数组:

Array => (
 [0]=>stdClass Object(
  [id]=>1
  [title]=> Title1
  [content]=>Content1
  [cat]=>Cat1
  [date]=>20140910
 )
 [1]=>stdClass Object(
  [id]=>2
  [title]=> Title2
  [content]=>Content2
  [cat]=>Cat2
  [date]=>20140910
 )
 [2]=>stdClass Object(
  [id]=>3
  [title]=> Title3
  [content]=>Content3
  [cat]=>Cat1
  [date]=>20140910
 )
)

我想通过“cat”=>“value”将其拆分并创建一个这样的数组

Array => (
 [Cat1] => Array(
  [0] => Array(
   [id]=>1
   [title]=> Title1
   [content]=>Content1
   [cat]=>Cat1
   [date]=>20140910
  )
  [1] => Array(
   [id]=>3
   [title]=> Title3
   [content]=>Content3
   [cat]=>Cat3
   [date]=>20140910
  )
 )
 [Cat2] => Array(
  [0] => Array(
   [id]=>2
   [title]=> Title2
   [content]=>Content2
   [cat]=>Cat2
   [date]=>20140910
  )
 )
)

所以这就是我想要做的事情,但我做不到。

2 个答案:

答案 0 :(得分:3)

您可以使用casting。在对象之前使用(array)。这里有一个例子..

$newArr = array();
foreach($obj as $val){
    $newArr[$val->cat][] = (array)$val;
}

答案 1 :(得分:2)

$array = array();
foreach ($objects as $k => $v) {
 if (!isset($array[$v->cat])) {
   $array[$v->cat] = array();
 } 
 $array[$v->cat][] = (array) $v;
}