Reputation: 49
Array
(
[0] => Array
(
[0] => Array
(
[masteryId] => 6111
[rank] => 5
)
[1] => Array
(
[masteryId] => 6122
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6151
[rank] => 5
)
[5] => Array
(
[masteryId] => 6162
[rank] => 1
)
[6] => Array
(
[masteryId] => 6211
[rank] => 5
)
[7] => Array
(
[masteryId] => 6223
[rank] => 1
)
[8] => Array
(
[masteryId] => 6231
[rank] => 5
)
[9] => Array
(
[masteryId] => 6241
[rank] => 1
)
)
[1] => Array
(
[0] => Array
(
[masteryId] => 6114
[rank] => 5
)
[1] => Array
(
[masteryId] => 6123
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6211
[rank] => 5
)
[5] => Array
(
[masteryId] => 6223
[rank] => 1
)
[6] => Array
(
[masteryId] => 6231
[rank] => 5
)
[7] => Array
(
[masteryId] => 6241
[rank] => 1
)
[8] => Array
(
[masteryId] => 6251
[rank] => 5
)
[9] => Array
(
[masteryId] => 6262
[rank] => 1
)
)
[2] => Array
(
[0] => Array
(
[masteryId] => 6114
[rank] => 5
)
[1] => Array
(
[masteryId] => 6122
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6312
[rank] => 5
)
[5] => Array
(
[masteryId] => 6322
[rank] => 1
)
[6] => Array
(
[masteryId] => 6331
[rank] => 5
)
[7] => Array
(
[masteryId] => 6343
[rank] => 1
)
[8] => Array
(
[masteryId] => 6351
[rank] => 5
)
[9] => Array
(
[masteryId] => 6362
[rank] => 1
)
)
[3] => Array
(
[0] => Array
(
[masteryId] => 6111
[rank] => 5
)
[1] => Array
(
[masteryId] => 6122
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6141
[rank] => 1
)
[4] => Array
(
[masteryId] => 6151
[rank] => 5
)
[5] => Array
(
[masteryId] => 6162
[rank] => 1
)
[6] => Array
(
[masteryId] => 6312
[rank] => 5
)
[7] => Array
(
[masteryId] => 6322
[rank] => 1
)
[8] => Array
(
[masteryId] => 6331
[rank] => 5
)
[9] => Array
(
[masteryId] => 6343
[rank] => 1
)
)
[4] => Array
(
[0] => Array
(
[masteryId] => 6114
[rank] => 5
)
[1] => Array
(
[masteryId] => 6123
[rank] => 1
)
[2] => Array
(
[masteryId] => 6134
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6311
[rank] => 5
)
[5] => Array
(
[masteryId] => 6322
[rank] => 1
)
[6] => Array
(
[masteryId] => 6332
[rank] => 5
)
[7] => Array
(
[masteryId] => 6342
[rank] => 1
)
[8] => Array
(
[masteryId] => 6351
[rank] => 5
)
[9] => Array
(
[masteryId] => 6362
[rank] => 1
)
)
[5] => Array
(
[0] => Array
(
[masteryId] => 6111
[rank] => 5
)
[1] => Array
(
[masteryId] => 6122
[rank] => 1
)
[2] => Array
(
[masteryId] => 6134
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6211
[rank] => 5
)
[5] => Array
(
[masteryId] => 6223
[rank] => 1
)
[6] => Array
(
[masteryId] => 6231
[rank] => 5
)
[7] => Array
(
[masteryId] => 6241
[rank] => 1
)
[8] => Array
(
[masteryId] => 6251
[rank] => 5
)
[9] => Array
(
[masteryId] => 6261
[rank] => 1
)
)
[6] => Array
(
[0] => Array
(
[masteryId] => 6111
[rank] => 5
)
[1] => Array
(
[masteryId] => 6121
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6211
[rank] => 5
)
[5] => Array
(
[masteryId] => 6223
[rank] => 1
)
[6] => Array
(
[masteryId] => 6231
[rank] => 5
)
[7] => Array
(
[masteryId] => 6241
[rank] => 1
)
[8] => Array
(
[masteryId] => 6251
[rank] => 5
)
[9] => Array
(
[masteryId] => 6262
[rank] => 1
)
)
[7] => Array
(
[0] => Array
(
[masteryId] => 6211
[rank] => 5
)
[1] => Array
(
[masteryId] => 6221
[rank] => 1
)
[2] => Array
(
[masteryId] => 6231
[rank] => 5
)
[3] => Array
(
[masteryId] => 6241
[rank] => 1
)
[4] => Array
(
[masteryId] => 6312
[rank] => 5
)
[5] => Array
(
[masteryId] => 6323
[rank] => 1
)
[6] => Array
(
[masteryId] => 6331
[rank] => 5
)
[7] => Array
(
[masteryId] => 6343
[rank] => 1
)
[8] => Array
(
[masteryId] => 6351
[rank] => 5
)
[9] => Array
(
[masteryId] => 6361
[rank] => 1
)
)
[8] => Array
(
[0] => Array
(
[masteryId] => 6111
[rank] => 5
)
[1] => Array
(
[masteryId] => 6122
[rank] => 1
)
[2] => Array
(
[masteryId] => 6131
[rank] => 5
)
[3] => Array
(
[masteryId] => 6142
[rank] => 1
)
[4] => Array
(
[masteryId] => 6151
[rank] => 5
)
[5] => Array
(
[masteryId] => 6161
[rank] => 1
)
[6] => Array
(
[masteryId] => 6312
[rank] => 5
)
[7] => Array
(
[masteryId] => 6322
[rank] => 1
)
[8] => Array
(
[masteryId] => 6331
[rank] => 5
)
[9] => Array
(
[masteryId] => 6343
[rank] => 1
)
)
[9] => Array
(
[0] => Array
(
[masteryId] => 6211
[rank] => 5
)
[1] => Array
(
[masteryId] => 6223
[rank] => 1
)
[2] => Array
(
[masteryId] => 6231
[rank] => 5
)
[3] => Array
(
[masteryId] => 6241
[rank] => 1
)
[4] => Array
(
[masteryId] => 6312
[rank] => 5
)
[5] => Array
(
[masteryId] => 6322
[rank] => 1
)
[6] => Array
(
[masteryId] => 6332
[rank] => 5
)
[7] => Array
(
[masteryId] => 6343
[rank] => 1
)
[8] => Array
(
[masteryId] => 6352
[rank] => 5
)
[9] => Array
(
[masteryId] => 6363
[rank] => 1
)
)
)
How can i convert the array above to array below.
The array above has 9 arrays inside. And they have masteryId and ranks inside. I want to make them a string. masteryid xx rank ++ masteryid xx rank ....
Array
(
[0] => 6111 xx 5 ++ 6122 xx 1 ++ 6131 xx 5 ++ 6142 xx 1 ....
[1] => 6114 xx 5 ++ 6123 xx 1 ++ 6131 xx 5 ++ 6142 xx 1 ....
....
[9] => 6221 xx 5 ++ 6223 xx 1 ++ 6231 xx 5 ++ ....
)
I am stuck with this code and i am trying to do this about 5 hours i couldnt do it so i came here.
Upvotes: 0
Views: 65
Reputation: 4218
Magic one-liner:
array_walk($array,function(&$a){$a=array_reduce($a,function($b,$c){return($b?"$b ++ ":"")."$c[masteryId] xx $c[rank]";},"");});
This calls an anonymous function for each element in the outer array. Because of the &
before $a
a reference to the element is passed and we can modify it within the function.
The function then reduces each element in turn to a string by appending "$c[masteryId] xx $c[rank]"
to the result of the previous reduction. The previous output, followed by " ++ "
is only prepended if it exists (ie it isn't the first item in the subarray).
Here it is a bit more legibly, with some whitespace and some potentially clearer variable names :)
array_walk($array, function(&$subarray){
$subarray = array_reduce($subarray, function($carry, $item){
return ($carry ? "$carry ++ " : "") . "$item[masteryId] xx $item[rank]";
}, "");
});
Upvotes: 3
Reputation: 319
Try this :
$output = array();
foreach($array as $value)
{
$s = "";
foreach($value as $v)
$s .= $v['masteryId'].' xx '.$v['rank'].' ++ ';
$output[] = rtrim($s,' ++ ');
}
I hope that will help you.
Upvotes: 4