2011-07-10 25 views
0

有人可以修復我的功能嗎?尋找在原有功能的意思(和其他問題!)

首先,我怎麼能去獲得從我的數字,在sum函數中使用的是什麼意思?如果我不知道將使用多少數字,我可以使用什麼來分割數字?

二,爲什麼不是我找替換功能的工作?當我運行與「壞」字的字符串,我得到這個(我剛剛進入醜陋):

array(1) { [0]=> string(4) "nice" } 

我想剛剛更換了不好的話返回整個字符串...

也,即使是在那裏它不會返回字符串的長度和字符串中的字數! GRR ...相當沮喪,所以我將是任何幫助,非常感謝......

文件之一:(得到的函數的返回)

<?php 
    require('myfunctions.php'); 
    if($_POST) { 
    $result = phptest($_POST['input']); 
    if ($result === false) { 
    echo 'No rude words were found.'; 
    } else { 
    var_dump($result); 
    } 
    } 
    ?> 

    <?php 
    echo "<br/> Sum function:".sum(1,2,3,4)."<br/>"; 
    echo "Average function:".mean(1,2,3,4)."<br/>"; 
    ?> 

    <form action="" method="post"> 
    <input name="input" type="text" size="20" maxlength="20" /> 
    <input name="submit" type="submit" value="submit" /> 
    </form> 

myfunctions:

<?php 
    function sum() 
    { 
    $sum = 0; 
    for ($i=0; $i<func_num_args(); $i++) $sum+= func_get_arg($i); 
    return $sum; 
    } 

    ?> 
    <?php 
    function phptest($input) { 
    $search = array('ugly', 'rude'); 
    $replace = array('nice', 'sweet'); 
    $output = str_ireplace($search, $replace, $input, $replace_count); 
    if ($replace_count === 0) { 
    return false; 
    } else { 
    return explode(' ', $output); 
    } 
    } 

    ?> 
+2

*可以使用哪些變量,如果劃分數我不知道有多少數字將被用來*但是你要知道,你已經在使用一個函數來獲取編號:'func_num_args()' –

+1

搜索和替換正在恢復,因爲這樣的數組'回報爆炸( '',$ output);'如果你想要一個字符串做這個:'return $ output;' –

+0

嗨。歡迎來到SO。您最好單獨提出個別問題。 :-) – Spudley

回答

2

沒有必要重新發明輪子。利用PHP原生函數,如array_sum()結合您的func_*函數。

function sum() { 
    return array_sum(func_get_args()); 
} 

function avg() { 
    $args = func_num_args(); 

    if ($args == 0) { 
    return 0; 
    } 

    return array_sum(func_get_args())/$args; 
} 

至於你phptest()功能,通過玻璃機器人看到評論。

+0

感謝您的幫助 – Luke

0

我建議使用內置的PHP函數array_sum()而不是滾動自己的sum()函數。

比方說你有一組你要使用的數字。如果將它們放入數組中,則可以使用array_sum()將它們相加,然後使用count()來找出有多少個數字。

<?php 
$data = array(1,2,3,4); 
echo "<br/> Sum function:".array_sum($data)."<br/>"; 
echo "Average function:".(array_sum($data)/count($data))."<br/>"; 
?> 

如果在現有sum()功能的風格編寫自己的mean()功能堅持,那麼你已經使用func_num_args()回答了自己的問題,這確實你問什麼了,並告訴你有多少個參數傳遞給函數。

當涉及到你的第二個問題,我會避免給了一個直接的答案,因爲褻瀆過濾器的整個主題已被毆打致死在這個網站。它通常被認爲是解決一個不可能的問題,因爲它總是容易找到周圍的任何過濾器的方式,他們通常在最不幸的時刻扔了假陽性(即使你的函數的工作,就落在Clubttic mistake的犯規。但如果你堅持寫一個,我會領你到這個問題,在這裏SO,這對PHP的一個很好的答案:How do I replace bad words with php?

希望幫助