Как strlen первых двух частей массива? - PullRequest
3 голосов
/ 03 мая 2019

У меня есть массив, например,

$words = array ('This', 'is', 'a', '', '', '', 'string');

, и я искал функцию, которая подсчитывает символы первых двух частей, в этом случае следует подсчитать this и is.результат для этих двух будет 5. Я знаю, что я могу просто сделать for, но проблема в том, что я хочу посчитать их, и если они достигают 70 символов или выше, тогда я хочу поместить остальные в новую строку.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 03 мая 2019

array_map() с strlen сделает все за вас. Я думаю, вы знаете, остальное, что делать. Я надеюсь, что вы можете рассчитать сумму первых двух элементов массива, если они равны или превышают 70, затем добавьте остальные элементы в новую строку в соответствии с вашими требованиями.

<?php
$words = array ('This', 'is', 'a', '', '', '', 'string');
$lengths = array_map('strlen', $words);
print_r($lengths);
?>

Выход:

Array ( 
     [0] => 4
     [1] => 2 
     [2] => 1 
     [3] => 0 
     [4] => 0 
     [5] => 0
     [6] => 6 
)
1 голос
/ 03 мая 2019

Если вы хотите посчитать только первые 2, выполните:

$cnt = strlen($words[0]) + strlen($words[1]);

Если вы хотите добавить разрывную строку после каждых 70 символов, лучше использовать полный цикл foreach со счетчиком как:

$line = 0;
$lines = array();
foreach($words as $word) {
    $line .= " " . $word;
    if (strlen($line) > 70) {
        $lines[] = $line . "\n";
        $line  = '';
    }
}
0 голосов
/ 04 мая 2019

Вы можете получить сумму первых двух строк следующим образом:

$words = array ('This', 'is', 'a', '', '', '', 'string');
// getting length of first two
$lengths = array_sum(array_map('strlen', array_slice($words,0,2)));
// $words = array_filter($words); // if you want to remove empty spaces
$words = implode(" ",$words); // creating a sentence
$newtext = wordwrap($words, 70, "\n"); // or <br /> instead of \n as per your requirement

wordwrap - Перенос строки на указанное число символов
array_filter - Фильтрует элементы массива с помощью функции обратного вызова
array_slice - Извлекает фрагмент массива
array_sum - Вычисляет сумму значений в массиве

...