2014-09-21 128 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