我正在做的事情可能太长,很奇怪,无法解释,但基本上我已经以复杂的方式将字符串映射到数组中,使它们混乱不堪。这是一个看起来如何的例子:
field[26][25]='x';
field[24][23]='z';
field[28][29]='y';
既然我已经成功地按照我想要的方式把字符串弄乱了,我需要重建线性结果。
因此,我需要取数组的第1行,并循环遍历该行中的所有元素,将它们组合成一个字符串。然后对第2行执行相同的操作,依此类推,创建一个巨大的线性字符串。
如何计算这些行中有多少行和元素?就我的一生而言,我甚至无法开始找到如何为多阵列做到这一点。
亲切问候
@u_mulder在那里得到了一个可靠的答案。对于元素的数量,你只需要说:
$total = 0;
foreach( $matrix as $row ) $total += count($row);
对于元素的串联,您只需说:
$concat = '';
foreach( $matrix as $row ) $concat .= implode('', $row);
鲍勃是你的叔叔。但是,对于这样一个奇怪的mashup,真的有一个有效的用例吗?
$field[26][25]='x';
$field[24][23]='z';
$field[28][29]='y';
$field_string = '';
array_walk_recursive ( $field , function($item, $key) use (&$field_string){
if(!is_array($item)){
$field_string .= $item;
}
});
echo $field_string;
老实说,这有点令人困惑。我可能需要更多信息,但请告诉我这是否有助于
您可以从一个空字符串开始,使用两个嵌套的foreach
迭代每行上的行和项,并将每个项附加到字符串中:
$result = '';
foreach ($fields as $row) {
foreach ($row as $item) {
$result .= $item;
}
}
也可以将整个内部foreach
替换为$result .= implode('', $row);
。
您甚至可以将外部foreach
替换为对array_map()
的调用,然后将implode()
将array_map()
生成的数组转换为字符串:
$string = implode(
'',
array_map(
function (array $items) {
return implode('', $items);
},
$fields
)
);