1

CURRENT ARRAY:

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
) 

I NEED: To create multidimensional array where keys like name1, text1, url1 (and so on) will be putted into own array. How to accomplish that?

1
  • You have an object - instance of stdClass. It is not array. Commented Feb 18, 2013 at 14:00

4 Answers 4

2

I think you want:

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

($object is your object above)

This will cast your object to an array, and split it into smaller arrays of 3 elements each

Sign up to request clarification or add additional context in comments.

1 Comment

Good answer as long as properties are in order and consistent.
1

Well;

$array = (array) $object;

1 Comment

Not really what the OP is asking for. I believe they want it broken down into multidimensional array based off the number at the end of the property. So all the 1's go together, all the 2's go together, etc...
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];

}

1 Comment

Please can you provide some explanation of your answer.
1

This would be very versatile even if you don't have consistent input, like exactly three properties per child. Also the properties in the object don't have to be in any particular order.

//$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;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.