如何计算数组的前两部分的字符串长度?

3

我有一个类似的数组,

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

我正在寻找一种计算前两部分字符数量的函数,即在此例中应计算thisis。这两个部分的结果将为5。我知道可以简单地使用for,但问题是我想要数它们,并且如果它们达到70个字符或更多,则我想把其余内容放在新行上。
非常感谢您提供任何帮助。

你目前做了什么?你想要插入一个新的数组元素吗? - Eddie
@Eddie 假设我有一个句子有156个字符。我用 preg_split 分割成单词数组。现在我想至少从该数组中计数70个字符并将其放入字符串中,直到字符用完为止,然后对其余的进行相同操作。 - Hadi Ahmadi
请在两种情况下分享您期望的输出,以便得到正确的解决方案。 - Rakesh Jakhar
3个回答

1
如果你只想计算前两个,那么可以这样做:

$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  = '';
    }
}

我认为通过你的解决方案,我可以完成剩下的部分。 - Hadi Ahmadi

1
使用strlenarray_map()可以为您完成此操作。我猜你知道该怎么做。我希望你能计算数组的前两个元素的和,如果它们等于或大于70,则根据您的要求在新行上添加其余元素。
<?php
$words = array ('This', 'is', 'a', '', '', '', 'string');
$lengths = array_map('strlen', $words);
print_r($lengths);
?>

Output:

Array ( 
     [0] => 4
     [1] => 2 
     [2] => 1 
     [3] => 0 
     [4] => 0 
     [5] => 0
     [6] => 6 
)

@HadiAhmadi,很高兴它在某种程度上对你有所帮助。我希望你能计算数组的前两个元素的总和,如果它们等于或大于70,则根据要求将其余部分添加到新行中。祝你好运,兄弟。 :) - A l w a y s S u n n y

0

你可以按照以下方式获取前两个字符串的总和:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接