这段代码实际上有效,但有点过于冗长,我想缩小它但我找不到解决方案......
编辑:进一步说明:$ keywords是一个数组,其中包含从文本中提取的大量单个单词。在$ text中我想把我可以使用相邻单词创建的al lemmas。假设我的原始文本是“我喜欢青苹果”,在$ keywords中我有“我”,“喜欢”,“绿色”,“苹果”。在$ text中我会有“我喜欢”,“我喜欢绿色”,“我喜欢青苹果”......
for ($i=0;$i<=count($keywords);$i++) {
$text[] = $keywords[$i];
$text[] = $keywords[$i]." ".$keywords[$i+1];
$text[] = $keywords[$i]." ".$keywords[$i+1]." ".$keywords[$i+2];
$text[] = $keywords[$i]." ".$keywords[$i+1]." ".$keywords[$i+2]." ".$keywords[$i+3];
$text[] = $keywords[$i]." ".$keywords[$i+1]." ".$keywords[$i+2]." ".$keywords[$i+3]." ".$keywords[$i+4];
$text[] = $keywords[$i]." ".$keywords[$i+1]." ".$keywords[$i+2]." ".$keywords[$i+3]." ".$keywords[$i+4]." ".$keywords[$i+5];
$text[] = $keywords[$i]." ".$keywords[$i+1]." ".$keywords[$i+2]." ".$keywords[$i+3]." ".$keywords[$i+4]." ".$keywords[$i+5]." ".$keywords[$i+6];
}
答案 0 :(得分:2)
您必须使用两个for循环才能创建这样的列表:
<?php
$keywords = explode(' ', 'k1 k2 k3 k4 k5 k6 k7');
$text = array();
for ($i = 0; $i < count($keywords); $i++) {
$line = array();
for ($j = 0; $j <= $i; $j++) {
$line[] = $keywords[$j];
}
$text[] = implode(' ', $line);
}
print_r($text);
/*
Array
(
[0] => k1
[1] => k1 k2
[2] => k1 k2 k3
[3] => k1 k2 k3 k4
[4] => k1 k2 k3 k4 k5
[5] => k1 k2 k3 k4 k5 k6
[6] => k1 k2 k3 k4 k5 k6 k7
)
*/
此代码应与任意长度数组一起使用。