如何使数组的前两部分变长?

时间:2019-05-03 16:01:40

标签: php arrays string strlen

我有一个类似

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

,我正在寻找一个对前两部分的字符进行计数的函数, 在这种情况下,应该计算thisis。这两个的结果将是5。我知道我可以简单地做一个 for,但是问题是我要对它们进行计数,如果它们达到70个字符或更高,那么我想将其余字符放在新行上。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果您只想计算前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  = '';
    }
}

答案 1 :(得分:1)

array_map() strlen 将为您解决问题。我想您知道剩下的事了。我希望您可以计算数组的前两个元素的和,如果a等于或大于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 
)

答案 2 :(得分:1)

您可以按以下方式获得前两个字符串的总和,

$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 —计算数组中的值之和