Подсчитайте длину строки внутри массива - PullRequest
0 голосов
/ 03 мая 2018

Как рассчитать длину строки в массиве:

$mainArray = [
    [4],
    [3, 4],
    [2, 30, 43, 65, 53, 634]];

Требуется вывод:

1
1,1
1,2,2,2,2,3

Моя идея - заменить строку на использование функции подсчета строк, но есть ли способ сделать прямой для массива?

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Попробуйте это,

$mainArray = [
[4],
[3, 4],
[2, 30, 43, 65, 53, 634]];
foreach($mainArray as $key => $element):
    foreach($element as $ele):
        $eleString =  countString($ele);
        if(count($element)>1) $eleString .= ',';
            echo $eleString;
    endforeach;
    echo '<br/>';
 endforeach;

 function countString($s) {
    return strlen((string)$s);
 }
0 голосов
/ 03 мая 2018

Вы можете использовать array_map() со встроенными функциями implode и strlen:

$mainArray = [
[4],
[3, 4],
[2, 30, 43, 65, 53, 634]];
print_r(array_map(function ($v) { 
                    return implode(',', array_map('strlen', $v));
                  },
                  $mainArray));

Выход:

Array
(
    [0] => 1
    [1] => 1,1
    [2] => 1,2,2,2,2,3
)
0 голосов
/ 03 мая 2018

PHP имеет array_map(), который может помочь вам сделать это.

function countString($s) {
    return strlen((string)$s);
}

function countArray($arr) {
    return array_map("countString", $arr);
}

$result = array_map("countArray", $mainArray);

Честно говоря, я думаю, что использование двух циклов было бы намного проще и понятнее ...

...