把一个句子放在三行PHP上



我有一个句子,这个句子可以有尽可能多的单词。这句话,我最多要剪三行。

例如:"我是蜘蛛侠">

Array
(
[0] => I
1] => am
[2] => spiderman
)

"我喜欢猫狗。">

Array
(
[0] => I love
[1] => dogs and
[2] => cats
)

这是我的代码:

<?php
$string = "I like big apple";
$words = explode(' ', $string);
$maxLines = 3;
$nbWords = count($words);
$wordsByLines = ceil($nbWords/$maxLines);
if($wordsByLines == 0) {
$wordsByLines = 1;
}
$index = 0;
$result = [];
for($i = 1; $i <= $nbWords; $i++) {
$result[$index] .= $words[$i-1]." ";
if($i % $wordsByLines == 0) {
$result[$index+1] .= $words[$i-1]." ";
}
}
print_r($result);

结果:

Array
(
[0] => I like big apple 
[1] => like apple 
)

错误在哪里?我昨天成功了。。。但我没有保存文件。我找不到的解决方案

我正在把句子中的单词脱口而出。(分解(我数单词(count($words((我按行计算单词数($wordsByLines=ceil($nbWords/$maxLines(;(我做了一个模,把单词放在相应的线上

Ty

// number or required lines
$chunksCount = 3;
$words = explode(' ', 'I love dogs and cats');
// count chunkSize and split array of words into chunks
$chunks = array_chunk($words, ceil(count($words) / $chunksCount)); 
$lines = [];
// Implode back
foreach ($chunks as $chunk) {
$lines[] = implode(' ', $chunk);
}
echo implode('<br />', $lines);

有些边缘案例你可以自己处理。

您的循环是主要问题,不确定您试图用它做什么,所以我将其更改为以下内容(代码中的一些注释用于更改(。。。

$string = "I like big apple";
$words = explode(' ', $string);
$maxLines = 3;
$nbWords = count($words);
$wordsByLines = ceil($nbWords/$maxLines);
// Initialise the lines to blank
$result = [ '', '', '' ];
// Start loop at 0, go to < rather then <=
for($i = 0; $i < $nbWords; $i++) {
// Just find which line by using floor()
$result[ floor($i / $wordsByLines) ] .= $words[$i]." ";
}
print_r($result);

最新更新