2013-02-18 77 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