Подсчитайте длину строки внутри массива

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

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

Требуемый выход:

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

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

0

Решение

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

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

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

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

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

0

Другие решения

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

$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

Ты можешь использовать 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
По вопросам рекламы [email protected]