2012-08-31 48 views
-1

此代碼實際工作,但它有點太冗長,我想縮小它,但我找不到解決方案...此代碼有效,但過於冗長,我如何縮短它?

編輯:進一步解釋:$關鍵字是一個數組與很多單從文本中提取的單詞。在$文本中,我想要使用相鄰詞語來創建基礎詞彙。假設我的原始文本是「我喜歡青蘋果」,在$關鍵字中我有「我」,「喜歡」,「綠色」,「蘋果」。在$文字的我有那麼「我喜歡」,「我喜歡綠色」,「我喜歡青蘋果」 ......

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];  
    } 
+3

爲什麼不告訴我們你在做什麼? – DarthVader

回答

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 
) 
*/ 

此代碼應該可以使用任意長度的數組。

+0

謝謝@Crozin! – Emanuele