Php 多维数组将内部数组转换为字符串
如何将上面的数组转换为下面的数组 上面的数组内部有9个数组。他们在里面有大师级的人物。我想把它们做成一根绳子。masteryid xx排名++masteryid xx排名Php 多维数组将内部数组转换为字符串,php,arrays,Php,Arrays,如何将上面的数组转换为下面的数组 上面的数组内部有9个数组。他们在里面有大师级的人物。我想把它们做成一根绳子。masteryid xx排名++masteryid xx排名 Array ( [0] => Array ( [0] => Array ( [masteryId] => 6111 [rank] =>
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
)
)
)
我被这段代码困住了,我试着做了大约5个小时,我做不到,所以我来到这里 试试这个:
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 ++ ....
)
我希望这会对您有所帮助。神奇一行:
$output = array();
foreach($array as $value)
{
$s = "";
foreach($value as $v)
$s .= $v['masteryId'].' xx '.$v['rank'].' ++ ';
$output[] = rtrim($s,' ++ ');
}
这将为外部数组中的每个元素调用一个匿名函数。由于&before$a,传递了对元素的引用,我们可以在函数中修改它
然后,该函数通过将$c[masteryId]xx$c[rank]追加到上一次缩减的结果,依次将每个元素缩减为一个字符串。前一个输出后跟+,只有在它存在时才加前缀,即它不是子数组中的第一项
这里更清晰一些,有一些空白和一些可能更清晰的变量名:
array_walk($array,function(&$a){$a=array_reduce($a,function($b,$c){return($b?"$b ++ ":"")."$c[masteryId] xx $c[rank]";},"");});
非常感谢你能解释一下这个代码吗。我会在2分钟内将这个答案标记为正确。你应该真正学会等待其他答案。我无意冒犯你,但这可能是最糟糕的方式之一。如果有任何解释,我会选择Matt Raines。如果你再次问类似的问题,请使用var_导出而不是打印来包含样本数据。var_导出的输出是PHP代码,这样我们就可以复制并粘贴到脚本中进行测试了。@MattRaines哦,我不知道下次我会使用它,谢谢info@AbraCadaver噢,嘘,谢谢!哇!谢谢,你在那里做了什么?你能解释一下吗?
array_walk($array, function(&$subarray){
$subarray = array_reduce($subarray, function($carry, $item){
return ($carry ? "$carry ++ " : "") . "$item[masteryId] xx $item[rank]";
}, "");
});