很多站长朋友们都不太清楚php反转运算,今天小编就来给大家整理php反转运算,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP 按位取反 运算符(~) 到底怎么算出来的? $a = 8 $b = ~$a echo $b 结果是 - 9 2、 php中反转字符串方法? 3、 php用递归函数反转数组 4、 PHP中如何实现字符串翻转? PHP 按位取反 运算符(~) 到底怎么算出来的? $a = 8 $b = ~$a echo $b 结果是 - 9在数值范围内,~a = -(a+1)
8的二进制是1000,补满32位,也就是前面28个0 1000
取反后 28个1 0111
第一位是符号位 1代表负数,剩下的27个1 0111
负数是用补码表示的,补码是原码取反+1,也就是说 27个1 0111 是某个数的补码,那倒推回去,这个数就是补码-1后取反,也就是 27个1 0110取反,得到27个0 1001,也就是9,再加上前面的符号位,得到-9
php中反转字符串方法?strrev
(PHP 4, PHP 5, PHP 7)
strrev — 反转字符串
说明
strrev ( string $string ) : string
返回 string 反转后的字符串。
参数
string
待反转的原始字符串。
返回值
返回反转后的字符串。
范例
Example #1 使用 strrev() 反转字符串
add a note add a note
User Contributed Notes 4 notes
6 info at ensostudio dot ru ¶3 months ago
It's faster and flexible than tianyiw function (comment #122953)
php用递归函数反转数组这个问题,简单,首先问楼主一个问题,如果说其中没有一个数组的话反转你应该会写对吧,其实这个里面有个数组就是再次调用一次本身函数就好,这就是所谓的递归,代码如下:
$arr=array("1","2","3","php",array("4","5","6"));
function array_rev($arr){
for($i=count($arr)-1;$i>=0;$i--){
if(is_array($arr[$i])){ //这里判断是否为数组
$temp1 = array_rev($arr[$i]); //若为数组则开始调用自身
$temp[] = $temp1;
continue;
}
$temp[] = $arr[$i];
}
return $temp;
}
var_dump(array_rev($arr));
PHP中如何实现字符串翻转?先说说一下吧:
strrev:这是php原生的翻转函数,但是只能针对于单字节字符组成的字符串进行翻转,比如:abc123,可以使用它翻转成123cba;
对于多字节反转:strrev是不支持的,很明显,我认为这是官方设计上的一种不合理,看官网也没有任何说明;那么我们怎么自己实现包含多字节的字符串翻转呢?我收集了两种办法:
一是使用正则//u这个正则匹配所有unicode字符串,二是使用mb_substr函数
方法一:
$str="学海无涯abc你好世界123";
print_r(join(
"",
array_reverse(preg_split("//u",$str))
));
方法二:
$str = "学海无涯abc你好世界123";
$len = mb_strlen($str,"utf8");
$restr = "";
for($i=$len-1;$i>=0;$i--){
$restr .=mb_substr($str,$i,1,"utf8");
}
echo $restr ;
附:如果以上程序不能允许,自己手敲一遍,这个编辑器会有些特殊字符导致程序没法允许。。
关于php反转运算的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。