Как рассчитать длину строки в массиве:
$mainArray = [
[4],
[3, 4],
[2, 30, 43, 65, 53, 634]];
Требуемый выход:
1
1,1
1,2,2,2,2,3
Моя идея — заменить строку на функцию подсчета строк, но есть ли способ сделать это напрямую в массиве?
PHP имеет array_map()
который может помочь вам сделать это.
function countString($s) {
return strlen((string)$s);
}
function countArray($arr) {
return array_map("countString", $arr);
}
$result = array_map("countArray", $mainArray);
Ну, честно говоря, я думаю, что использование двух циклов было бы намного проще и понятнее …
Попробуй это,
$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);
}
Ты можешь использовать 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
)