【问题标题】:How to strlen first two parts of an array?如何strlen数组的前两部分?
【发布时间】:2019-05-03 16:01:39
【问题描述】:

我有一个类似的数组,

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 到目前为止你做了什么?通过换行你想插入一个新的数组元素吗?
  • @Eddie 假设我在一个句子中有 156 个字符。我用 preg_split 来造词。现在我想从该数组中计算至少 70 个字符并将其放入一个字符串中,其余的都这样做,直到字符完成
  • 请在这两种情况下分享您的预期以获得正确的解决方案

标签: php arrays string strlen


【解决方案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  = '';
    }
}

【讨论】:

  • 我认为通过您的解决方案,我可以完成剩下的工作
【解决方案2】:

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 
)

【讨论】:

  • @HadiAhmadi 很高兴它对您有所帮助,我希望您可以计算数组前两个元素的总和,如果等于或高于 70,则根据要求将其余元素添加到新行.祝你好运兄弟。 :)
【解决方案3】:

你可以得到前两个字符串的总和,如下所示,

$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 — 提取数组的切片
@987654324 @ — 计算数组中值的总和

【讨论】:

    猜你喜欢
    • 2014-10-21
    • 2011-11-26
    • 2020-09-21
    • 2011-05-07
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多