2014-07-15 74 views
-1

嗯,這有效,但我希望有人能告訴我如何改進它。它似乎有這樣做更清潔的方式:確定沒有內置函數的字符串長度

function beanCounter($bean) 
{ 
    $counter = 0; 
    $i = 0; 
    while($bean[$i] != '') { 
     if($bean[$i] != ' ') { 
     $counter++; 
     } 
     $i++; 
    } 
    return $counter; 
} 

// following test case returns 26 
$testString = "a b c d e f g h i j k l m n o p q r s t u v w x y z"; 
$stringLength = beanCounter($testString); 
echo($stringLength); 

我其實只算個字符,並能佔多句子串撇號或時間我在想,如果我使用正則表達式。顯然有內置功能,可以做到這一點,但我對它們不感興趣

謝謝!

+0

你不是認真地要求一個更清潔的方式,當你拒絕使用的strlen()或其他內置功能,你呢?此外,你的問題確實要求你的代碼計算相同。此外,你寫「關於撇號或時期的帳戶」,但沒有進一步澄清你的要求。 –

回答

0

而且更清潔:

while(ctype_alpha($bean[$i++])) { 
} 
+1

「ctype_alpha」是一個內置函數 – Andre

+3

所以...這是重複的問題:[上一個問題](http://stackoverflow.com/questions/7997445/detecting-end-沒有使用的函數) – ConductedClever

-1
while($bean[$i] != '') { 
     if(ctype_alpha($bean[$i])) { 
     $counter++; 
     } 
     $i++; 
    } 

使用而ctype_alpha - 檢查字母字符(S)

檢查是否所有提供的字符串中的字符,文字是字母。在標準C語言環境中,如果$ text只是單個字符,但其他語言包含字母,則標準C語言環境中的字母僅爲[A-Za-z],ctype_alpha()與(ctype_upper($ text)|| ctype_lower($ text)那些被認爲既不是大寫也不是小寫。

see php manual

+0

謝謝!我沒有意識到這些功能,它們看起來很模糊,不能算作「內置」+1。 – Brian

+0

爲什麼-1爲downvoter?需要知道 – bumbumpaw

0

可以使用。這將考慮每個由空格分隔的元素作爲新字符並將其存儲在一個數組中,並使用sizeof($arr)來計算值。

$arr[] = explode(" ",$teststring);

+0

這有點太「內置」了,但我很欣賞響應!如果我還有4分,我肯定會爲你付出努力。 – Brian

相關問題