2014-02-23 35 views
0

我想要反向每個單詞的字符串在這裏是我的邏輯可以任何身體檢查,並使其正確的地方,我得到錯誤必須感激我知道我錯過了一些事情一點點。如果使這個代碼和邏輯寫入,必須感激。獲取反向每個單詞的錯誤在php

代碼: -

<?php 
$a = "i am getting late"; 
$count = 0; 
$Reversestring = ""; 

while(isset($a[$count])) 
{ 
    if($a[$count] != '') 
    { 
     echo $a[$count]; 
     $catchWord .= $a[$count]; 
     $count++; 
    }else{ 
     die($catchWord); 
     $Reversestring .= reverseWord($catchWord); 
    } 
} 

echo $Reversestring; 

function reverseWord($word) 
{ 
    $revWord; 
    for($i = str_word_count($word) ; $i > 0; $i--) 
    { 
     $revWord = $word[$i]; 
    } 
    return $revWord; 
?> 
+0

您的意思是使用'='代替'reverseWord'函數中'='的含義? –

+0

這可能是一個可能的重複這個問題.http://stackoverflow.com/questions/2977556/how-to-reverse-words-in-a-string – Mubo

回答

0

與功能的問題是,你在這個新的字符串末尾添加字符。 $str .= $foo追加$foo$str的末尾。你要預先把它加到反向的字符串中。

使用內置函數

PHP已經有內置的功能來實現的任務。您可以簡化邏輯並使用以下解決方案,而不是修改該功能。爲什麼重新發明輪子?

$result = array_map(function ($item) { 
    return strrev($item); 
}, explode(' ', $a)); 

$reversed = implode(' ', $result); 

不使用內置函數

如果你不希望使用內置的功能,那麼您可以採用如下方案。代號爲this answer

$reversed = ""; 
$tmp = ""; 

for($i = 0; $i < strlen($string); $i++) { 
    if($string[$i] == " ") { 
     $reversed .= $tmp . " "; 
     $tmp = ""; 
     continue; 
    } 
    $tmp = $string[$i] . $tmp;  
} 

$reversed .= $tmp; 

輸出:

i ma gnitteg etal 
+0

實際上我不希望使用任何buit函數中提到我的根據我的邏輯問題。 – Wajihurrehman

+0

@Wajihurrehman:查看最新的答案。 –

0

試試這個

$str = "Iam New Here"; 
$spaceCount = substr_count($str, " "); 
$letterIndx = 0; 
// count number of spaces and then loop 
for($i=0; $i<=$spaceCount; $i++) { 
    // get space positions 
    $spaceIndx = strpos($str, " ", $letterIndx); 
    // assign word by specifying start position and length 
    if ($spaceIndx == 0) { 
    $word = substr($str, $letterIndx); 
    } else { 
    $word = substr($str, $letterIndx, $spaceIndx - $letterIndx); 
    } 
    // push word into array 
    $myArray[] = $word; 
    // get first letter after space 
    $letterIndx = $spaceIndx + 1; 
} 

// reverse the array 
$reverse = array_reverse($myArray); 

// echo it out 
foreach($reverse as $rev) { 
    echo $rev." "; 
} 

輸出將是:這裏的新蔭

相關問題