Heptagon
Heptagon

Reputation: 49

Multidimensional array Converting inside arrays to strings

    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

Answers (2)

Matt Raines
Matt Raines

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

Youcef Moulahoum
Youcef Moulahoum

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

Related Questions