2013-02-18 56 views
1

當前數組:PHP - 變換陣列到新的一個

stdClass Object (
[name1] => Someting very useful 
[text1] => Description of something useful 
[url1] => link.to/useful 
[name2] => Someting very useful2 
[text2] => Description of something useful2 
[url2] => link.to/useful2 
[name3] => Someting very useful3 
[text3] => Description of something useful3 
[url3] => link.to/useful3 
) 

我需要: 要創建多維數組,其中相同的名稱1,文本1,URL1(依此類推)鍵將推杆成自己的數組。如何做到這一點?

+0

你有一個對象 - stdClass的實例。它不是數組。 – vikingmaster 2013-02-18 14:00:52

回答

2

我想你想:

$array = array_chunk((array)$object, $chunkSize = 3, $preserveKeys = true); 

$object高於你的對象)

這會投你的對象數組,並分成3個元素每個

的小陣列
+0

只要屬性的順序和一致性都是很好的答案。 – Pitchinnate 2013-02-18 14:53:01

1

好吧;

$array = (array) $object; 
+0

不是真正的OP要求什麼。我相信他們希望根據財產末尾的數字將其分解爲多維數組。所以所有的1都一起去了,所有的2都一起去了,等等...... – Pitchinnate 2013-02-18 14:50:29

1

即使你沒有一致的輸入,這將是非常靈活的,如每個孩子三個屬性。此外,對象中的屬性不必以任何特定的順序。

//$obj is the object you have in the question 
$objects = array(); 
foreach($obj as $key => $val) { 
    $result = preg_match('%([a-zA-Z]+)([0-9]+)%', $key,$matches); 
    $new_key = $matches[2]; 
    $property = $matches[1]; 
    if(!isset($objects[$new_key])) { 
     $objects[$new_key] = array(); 
    } 
    $objects[$new_key][$property] = $val; 
} 
1
$array = array(); 
$c = count($object)/3; 
(Array) $object; 

for($i = 1; $i <= $c; $i++){ 

    $array[$i]['name' + $i] = $object['name' + $i]; 
    $array[$i]['text' + $i] = $object['text' + $i]; 
    $array[$i]['url' + $i] = $object['url' + $i]; 

} 
+0

請你可以提供你的答案的一些解釋。 – 2013-02-18 14:33:40