2014-09-21 130 views
0

我想通过key => value将对象数组拆分为多个数组,但我无法弄清楚它是如何实现的。PHP按对象将对象数组拆分为多个数组=>值

我有一个这样的阵列:

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 
) 
) 

,我想通过“猫” =>“值”拆分此和创建这样

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

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

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

感谢这worekd!我没有想到解决方案会如此简单。我倾向于认为事情:) – 2014-09-21 17:44:07

+0

不客气:) – MH2K9 2014-09-21 17:45:40

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

不需要'!isset($ array [$ v-> cat])..',只需要'$ array [$ v-> cat] [] = ..'会做得很好。 – deceze 2014-09-21 17:35:26

+0

这是为了清晰) – olegkhuss 2014-09-21 17:43:28