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?
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
Well;
$array = (array) $object;
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;
}
$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];
}