PHP程序来交换字符串中的第一个和最后一个字符[重复]

xqkwcwgp  于 2023-05-27  发布在  PHP
关注(0)|答案(3)|浏览(152)

此问题已在此处有答案

Exchanging the first character & the last character in a string(6个答案)
2天前关闭。
我正在做这个练习:
“编写一个PHP程序来交换给定字符串中的第一个和最后一个字符并返回新字符串。”
我试着做的事情是这样的:

function stringReverse($str){

    $newStr = array($str);

    $tab = [];

    for($i = 0 ; $i<count($newStr); $i++){
        if($newStr[$i] == [0] && $str[$i] == [count($newStr)-1]){
            $tab[$i] = count($newStr)-1 && $tab[$i]= $newStr[0];
        }
        return $tab;
    }
}

echo stringReverse("abcd");

但它不工作-我得到这个错误:
PHP Notice:数组到字符串的转换在第89行Array
我期待这个结果:

dbca

练习目标:交换字符串的第一个和最后一个字符。
有人能帮忙吗?

eiee3dmh

eiee3dmh1#

这可能是一个更简单的方法:

$numchars = strlen($str);
$newstr = $str[$numchars - 1] . substr($str, 1, $numchars - 2) . $str[0];

请注意,这里假设使用简单的单字节字符。如果你有多字节字符串,它就不起作用。

v440hwme

v440hwme2#

使用字符串可以作为数组访问,您可以交换数组的第一个和最后一个元素。因此,存储一个值,用另一个值替换它,然后完成交换...

function swapFirstLast(string $str) : string
{
    $last = $str[-1];
    $str[-1] = $str[0];
    $str[0] = $last;

    return $str;
}

echo swapFirstLast('abcd');
1wnzp6jl

1wnzp6jl3#

看起来你的代码有一些问题。让我们通过他们,并修复他们一步一步,只是因为你是新的,这将是一个很好的做法,如果我纠正你的代码,而不是给一些解决方案。

  • 阵列初始化不正确:不使用array($str),您可以直接将字符串赋给$newStr变量。
  • 不正确的条件和分配:条件if($newStr[$i] == [0] && $str[$i] == [count($newStr)-1])不正确。您正在将值与[0]和[count($newStr)-1]进行比较,这是无效语法。

另外,赋值$tab[$i] = count($newStr)-1 && $tab[$i] = $newStr[0];是不正确的

  • 提前返回:返回$tab;语句被放置在for循环中,这将导致循环在第一次迭代后终止。你应该把return语句移到循环之外。
  • 输出格式不正确:要返回交换了第一个和最后一个字符的新字符串,需要正确地连接字符。

下面是正确的代码:

function stringReverse($str) {
$tab = str_split($str);  // Convert the string to an array of characters

// Check if the array has at least two elements
if (count($tab) >= 2) {
$temp = $tab[0];  // Store the first character in a temporary variable
$tab[0] = $tab[count($tab) - 1];  // Assign the last character to the first position
$tab[count($tab) - 1] = $temp;  // Assign the first character to the last position
}

return implode('', $tab);  // Convert the array back to a string
 }

echo stringReverse("abcd");

相关问题