php实现反向
PHP 实现字符串反转
使用内置函数 strrev() 可以快速反转字符串。该函数直接返回反转后的结果,适用于所有 UTF-8 以外的单字节字符集。
$original = "Hello World";
$reversed = strrev($original);
echo $reversed; // 输出 "dlroW olleH"
手动实现字符串反转
通过循环遍历字符串并逐个字符拼接,可以实现反转逻辑。这种方法适用于需要自定义处理的情况。
$original = "Hello World";
$reversed = "";
for ($i = strlen($original) - 1; $i >= 0; $i--) {
$reversed .= $original[$i];
}
echo $reversed; // 输出 "dlroW olleH"
处理多字节字符(如中文)
对于多字节字符(如 UTF-8 编码的中文),需使用 mb_ 系列函数确保正确反转。
$original = "你好世界";
$reversed = "";
$length = mb_strlen($original, 'UTF-8');
for ($i = $length - 1; $i >= 0; $i--) {
$reversed .= mb_substr($original, $i, 1, 'UTF-8');
}
echo $reversed; // 输出 "界世好你"
数组反转
使用 array_reverse() 函数可以反转数组元素的顺序。该函数会返回一个新数组,原数组不变。
$originalArray = [1, 2, 3, 4];
$reversedArray = array_reverse($originalArray);
print_r($reversedArray); // 输出 [4, 3, 2, 1]
链表反转(数据结构)
若需反转链表等数据结构,可通过迭代或递归实现。以下为迭代法示例:
class ListNode {
public $val;
public $next = null;
public function __construct($val) {
$this->val = $val;
}
}
function reverseList($head) {
$prev = null;
$current = $head;
while ($current != null) {
$next = $current->next;
$current->next = $prev;
$prev = $current;
$current = $next;
}
return $prev;
}
// 示例用法
$node1 = new ListNode(1);
$node2 = new ListNode(2);
$node3 = new ListNode(3);
$node1->next = $node2;
$node2->next = $node3;
$reversedHead = reverseList($node1);
while ($reversedHead != null) {
echo $reversedHead->val . " "; // 输出 3 2 1
$reversedHead = $reversedHead->next;
}






