计算多维数组行及其各自的元素?

时间:2016-03-27 13:12:34

标签: php

我正在做一些可能太长而且很难解释的事情,但基本上我已经将一个字符串以复杂的方式映射到数组中,以使它们混乱。这是它的外观示例:

field[26][25]='x';
field[24][23]='z';
field[28][29]='y';

现在我已经按照我想要的方式成功地混乱了字符串,我需要重建线性结果。

所以我需要获取数组的第1行,并遍历此行中的所有元素以将它们组合成一个字符串。然后对第2行执行相同的操作,依此类推,创建一个大型线性字符串。

如何计算这些行中有多少行和元素?对于我的生活,我甚至无法开始找到如何为multid数组执行此操作。

亲切的问候

3 个答案:

答案 0 :(得分:0)

@ u_mulder在那里得到了一个坚实的答案。对于元素的数量,您只需说:

$total = 0;
foreach( $matrix as $row ) $total += count($row); 

对于元素的连接,你只需说:

$concat = '';
foreach( $matrix as $row ) $concat .= implode('', $row);
鲍勃是你的叔叔。但是真的,这样一个奇怪的mashup是否有一个有效的用例?

答案 1 :(得分:0)

$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;
老实说,这有点令人困惑。我可能需要更多信息,但如果有帮助请告诉我

答案 2 :(得分:0)

您可以从一个空字符串开始,并使用两个嵌套的foreach来迭代每行上的行和项目,并将每个项目附加到字符串:

$result = '';
foreach ($fields as $row) {
    foreach ($row as $item) {
        $result .= $item;
    }
}

或者您可以使用foreach替换整个内部$result .= implode('', $row);

您甚至可以通过调用array_map()然后implode()foreach生成的数组调用为字符串来替换外部array_map()

$string = implode(
    '',
    array_map(
        function (array $items) {
            return implode('', $items);
        },
        $fields
    )
);