2009-08-14 49 views
0

我們的目標是計算段落數的一組用戶的文本中......這裏我的語法有什麼問題?

(我將承擔起它總是大於5個段落爲這項工作)

然後我想1/2段落數,將其舍入並輸入一些內容(echo "yehhoo")。

我明白我已經得到了我的$newvalue不是很好的樣子,也想對幫助...

<?php 

$choppedup = explode("<p>",$node->field_long_body[0]['safe']); 
$choppedpos = count($choppedup); 
$choppedpos2 = $choppedpos/2; 
$newvalue = floor($choppedpos2); 

//I know this is working to here... the rest not so sure. 

for($j = 0; $j < $choppedup; $j ++): 
    print $choppedup[$j]; 
    if ($j == $newvalue): 
    echo "yehhoo" ;  
    endif; 
endif; 
?> 

謝謝

回答

3
for 
... 
endfor;  # not endif 

$newvalue計算並不可怕,對於數組迭代我寧願建議foreach循環(使用大括號):

foreach($choppedup as $ind => $p) { 
    echo $p; 
    if ($ind == $newvalue) { 
     echo 'yehoo'; 
    } 
} 
+0

工作出色。謝謝 我會探討「如」......這是一個新的肯定... – fighella 2009-08-14 12:00:07

+0

林在這個新的。我沒有downvote .. :)會接受壽。非常感謝。 – fighella 2009-08-14 12:07:31

+0

我知道你沒有,你不能:)但我真的好奇我應該改正什麼來改善我的答案。 – SilentGhost 2009-08-14 12:09:04

1

大鬍子「Yehhoo」!

for($j == 0; $j < $choppedup; $j ++) { 
    print $choppedup[$j]; 
    if ($j == $newvalue) { 
      echo "yehhoo"; 
    } 
} 
+0

爲什麼一些例子使用「:」......那裏有什麼區別? (ps謝謝) – fighella 2009-08-14 11:53:35

+0

@fighella:閱讀您實際使用的內容:http://docs.php.net/manual/en/control-structures.alternative-syntax.php – SilentGhost 2009-08-14 11:56:58

+0

我想我沒有注意for和foreach ...會更加註意... – fighella 2009-08-14 12:24:48

0

爲什麼做這樣一個複雜的循環計數段落標記的數量?

你可以做這樣的事情:上述

$sInput = '<p>Hello World</p><p>What is going on</p><p>Blah</p>'; 
if(preg_match_all('/<p>/', $sInput, $arMatches)!==false) 
    print count($arMatches[0]) . ' paragraphs<br/>'; 

當然需要一些工作,以確保有段落標記之間的文本,但是這應該爲你工作的需要。

+0

循環並不複雜,但是你的代碼確實不是noob可讀的。 – 2009-08-14 17:45:14

+0

這對他的目的來說很複雜。只需使用正則表達式即可輕鬆實現自己的目標。維護起來更容易,如果您的要求發生變化,則不需要做太多改動。 這不是關於如你所說的那樣「小孩友好」。這裏的區別是代碼對於他的目的太複雜了。不要試圖重新發明輪子並使用你所擁有的東西。 – Daniel 2009-08-14 17:48:41