不使用内置函数的句​​子中单词的反向顺序

时间:2012-03-28 12:30:54

标签: php logic

我接受了一次采访,一个看似非常简单的问题没有点击我的想法。只是想得到它的答案,因为已经尝试了很多,无法找到解决方案。

我必须在对面写一个句子,如

input => My Name Is Junaid
output => Junaid Is Name My

不应该使用PHP的任何内置函数

由于

修改

我做到了这个

$string = "My Name Is Junaid";
$len = strlen($string);
for($i=$len; $i > 0; $i--){
    echo $string[$i-1];
}

结果

dianuJ sI emaN yM

需要更多调整

11 个答案:

答案 0 :(得分:10)

<?php

$str = "My Name is Fred";
$i = 0;
while( $d = $str[$i] )
{
    if( $d == " "){

        $out = " ".$temp.$out;
        $temp = "";
    }else{
        $temp.=$d;

    }
    $i++;
}
echo $temp.$out;
?>

答案 1 :(得分:6)

试试这个:

$str = 'My name is James'; 
$str_arr = explode(' ',$str); 
$i=0; 
for($i=(count($str_arr)-1);$i>=0;$i--){ 
  echo $str_arr[$i].' '; 
}

答案 2 :(得分:2)

<?php
$name = 'shashank is a good boy';
$i = 0;
while($name[$i] != '')
{
    $i++;
}
$len = $i;
for ($j=$len; $j>0; $j--){
    echo $name[$j-1];
}
?>

答案 3 :(得分:1)

实际上,使用控制结构是可能的。没有strlen也是。它只会产生一个通知级错误。

我很确定它可以做得更好,但这里是快速解决方案,没有任何PHP功能,只是控制结构。

$string = 'My Name Is Junaid';
 $i = 0;
 $output = array('');
 $output_index = 1;
 while (true) {
    $char = $string{$i};
    $i++;
    if ($char == ' ') {
        $output[$output_index] = '';
        $output_index++;
    } elseif ($char === '') {
        break;
    } else {
        $output[$output_index - 1] .= $char;
    }
 }

 for ($i = $output_index; $i--; $i >= 0) {
     echo $output[$i];
     echo ' ';
 }

答案 4 :(得分:0)

试试这个:

function reverse_string($str) {
  while ($str[$i]) {
    if ($str[$i] != '~') {
      $rstr = $str[$i] . $rstr;
      $str[$i] = '~';
    }
    ++$i;
  }
  return $rstr;
}

答案 5 :(得分:0)

<?php

$rev = array("vignesh");
    foreach ($rev as $name)
     {
        echo $name[6];
        echo $name[5];
        echo $name[4];
        echo $name[3];
        echo $name[2];
        echo $name[1];
        echo $name[0];
    }

?>

输出:

hsengiv

答案 6 :(得分:0)

通过这种方式,您可以减少循环次数,从而节省性能效率

<?php
$str = "My Name is Aman jain";
$p = explode(' ',$str);

for ($i= (count($p)-1); $i >= 0  ; $i--) { 
   echo $p[$i]. ' ';
}

答案 7 :(得分:0)

请检查:

$str = "NAHUAHC PATARP NAMUSNA si eman YM";
$reverseStr = "";
$length = 0;
while (isset($str[$length])) {
    $reverseStr = $str[$length] . $reverseStr;
    $length++;
}
print $reverseStr;
echo "\n";

答案 8 :(得分:0)

请看下面的代码:反转字符串

   $str = 'abcdefg';
    $reverseString = '';
    for($i=strlen($str);$i<=strlen($str);$i--){
      $reverseString .= $str[$i];
    if($i==0)
    break;
    }

    echo $reverseString;

以上代码输出为:

gfedcba

答案 9 :(得分:-2)

通过字符(使用[])搜索空格(或任何白色字符)从末尾向输入字符迭代。如果找到一个,保存位置。找到第二个时,将两个位置之间的字符添加到输出中。如果您还可以使用strlen

,则至少需要substr
<?php
$input = "My Name Is Junaid";
$output = "";
$lastpos = strlen($input);
for ($i = strlen($input) - 1; $i >= 0; $i--) {
  if ($input[$i] == ' ') {
    if (strlen($output) > 0) $output .= ' ';
    $output .= substr($input, $i + 1, $lastpos - $i);
    $lastpos = $i;
  }
}
echo $output;

答案 10 :(得分:-2)

您可以使用for循环

来反转整个字符串
$str2 = '';
for($i=0;$i<strlen($str);$i++)
    $str2 .= $str[strlen($str)-$i-1];

然后,查找每个单词(在空格之间),并使用相同的算法反转它们。