当前位置: 编程技术>php
本页文章导读:
▪浅谈PHP与C#的值类型指向区别的详解
PH和C#的值拷贝区别(如果哪里说的不对,还望指出!)$a = 2;$b = $a; //在php中这里把b的地址指向a 所以b此时也等于2;区别就在这$a = 5; //这时php中a的值又重新写值,所以php核心这时才会把b重.........
▪PHP无法访问远程mysql的问题分析及解决
首先说明,远程服务器是可远程访问的。 我遇到的问题是这样的:有A,B,C三台服务器,C为服务器,B可以用PHP成功连接上C机器的mysql,而A机器则不能连接! 可以说,肯定不是代码有什么.........
▪基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
使用“===”来判断,至于它和“==”的区别,简单来说就是前者强调“identical(相同的,完全相同)”类型也要求一样;后者要求“equal(相等)”,值相同就可以了。或者使用strcmp来判断,但.........
[1]浅谈PHP与C#的值类型指向区别的详解
来源: 互联网 发布时间: 2013-11-30
PH和C#的值拷贝区别(如果哪里说的不对,还望指出!)
$a = 2;
$b = $a; //在php中这里把b的地址指向a 所以b此时也等于2;区别就在这
$a = 5; //这时php中a的值又重新写值,所以php核心这时才会把b重新分配一个地址,然后把a原先的值进行拷贝。这就是 写时拷贝 原理 , 也就是说,除非进行写操作,否则值类型就是指向一个地址。
而C#中。值类型的复制。永远都是新建一个地址 如:
int a = 2;
int b = a; //此时不管有没有进行a的二次写入。.NET都会把给b分配一个新的内存空间(值存在栈空间的)。然后再把a的值拷贝一份
注意: C#中 值类型的值是直接存放栈中的。而引用类型,引用地址是存放在栈中,实际的值则存放在堆中。根据栈的地址,找堆中的值.
$a = 2;
$b = $a; //在php中这里把b的地址指向a 所以b此时也等于2;区别就在这
$a = 5; //这时php中a的值又重新写值,所以php核心这时才会把b重新分配一个地址,然后把a原先的值进行拷贝。这就是 写时拷贝 原理 , 也就是说,除非进行写操作,否则值类型就是指向一个地址。
而C#中。值类型的复制。永远都是新建一个地址 如:
int a = 2;
int b = a; //此时不管有没有进行a的二次写入。.NET都会把给b分配一个新的内存空间(值存在栈空间的)。然后再把a的值拷贝一份
注意: C#中 值类型的值是直接存放栈中的。而引用类型,引用地址是存放在栈中,实际的值则存放在堆中。根据栈的地址,找堆中的值.
[2]PHP无法访问远程mysql的问题分析及解决
来源: 互联网 发布时间: 2013-11-30
首先说明,远程服务器是可远程访问的。
我遇到的问题是这样的:有A,B,C三台服务器,C为服务器,B可以用PHP成功连接上C机器的mysql,而A机器则不能连接!
可以说,肯定不是代码有什么问题,服务器上的mysql设置也是没什么问题的,因为B机器都是可以的。
肯定是A机器的设置有问题!
在网上一顿搜,各种说mysql授权问题的,以及修改php.ini的,修改防火墙的,事实上都不是这些问题导致的。
和这个页面上讨论的问题类似,但是没人给出结果,链接:http://bbs.csdn.net/topics/90284141
最后想到了SELINUX的问题,对比了下AB两台机器,果然设置不一样!估计就是它的问题,有戏!
进行了如下设置:
root下,用vim打开文件文件/etc/selinux/config
修改SELINUX的值:
#SELINUX=enforcing
SELINUX=disabled
保存并退出。
重启生效,如果不想重启,命令行输入
setenforce 0
回车,OK
此处修改参考:http://www.xiaojb.com/archives/tips/disabled-selinux.shtml
最后,连接成功,哦耶!!!
我遇到的问题是这样的:有A,B,C三台服务器,C为服务器,B可以用PHP成功连接上C机器的mysql,而A机器则不能连接!
可以说,肯定不是代码有什么问题,服务器上的mysql设置也是没什么问题的,因为B机器都是可以的。
肯定是A机器的设置有问题!
在网上一顿搜,各种说mysql授权问题的,以及修改php.ini的,修改防火墙的,事实上都不是这些问题导致的。
和这个页面上讨论的问题类似,但是没人给出结果,链接:http://bbs.csdn.net/topics/90284141
最后想到了SELINUX的问题,对比了下AB两台机器,果然设置不一样!估计就是它的问题,有戏!
进行了如下设置:
root下,用vim打开文件文件/etc/selinux/config
修改SELINUX的值:
#SELINUX=enforcing
SELINUX=disabled
保存并退出。
重启生效,如果不想重启,命令行输入
setenforce 0
回车,OK
此处修改参考:http://www.xiaojb.com/archives/tips/disabled-selinux.shtml
最后,连接成功,哦耶!!!
[3]基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
来源: 互联网 发布时间: 2013-11-30
使用“===”来判断,至于它和“==”的区别,简单来说就是前者强调“identical(相同的,完全相同)”类型也要求一样;后者要求“equal(相等)”,值相同就可以了。或者使用strcmp来判断,但是这个能够告诉你两个字符串是否相等,但是无法告诉你在哪里不同。
一般能用 !=, == 比较两个对象是否相等,之所以说是两个对象,是因为他们不一定全部为字符串,也能为整型等等。比如
代码如下:
$a = "joe";
$b = "jerry";
if ($a != $b)
{
echo "不相等";
}
else
{
echo "相等";
}
如果用 !== , === 比较的话,两个对象的类型要严格相等才能返回true;否则用==,!=则会将字符串自动转换成相应的类型,以便进行比较.
代码如下:
22 == "22"; // 返回 true
22 === "22"; // 返回falsePHP 用于字符串比较的函数:strcmp(),strcasecmp(),strncasecmp(), strncmp(),他们都是 如果前者比后者大,则返回大于0 的整数;如果前者比后者小,则返回小于0 的整数;如果两者相等,则返回0.
1)strcmp是用于 区分大小写 (即大小写敏感)的字符串比较:
2)echo strcmp("abcdd", "abcde"); // 返回 1 (>0), 比较的是 "b"和"b"
3)strcasecmp用于不区分大小写的字符串比较:
4)echo strcasecmp("abcdd", "abcde"); // 返回 -1 (<0), 比较的是"d"和"e"
strncmp用于比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncmp("abcdd", "abcde", 3); // 返回 1 (>0), 比较了 abc 和 abc
strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncasecmp("abcdd", "abcde", 3); // 返回 0, 比较了 abc 和 abc, 由于不区分大小写,所以两者是相同的。
更有一种情况是单单比较字符串大小,达不到我们预定的需求,比如照常理 10.gif 会比 5.gif 大,但如果应用上面几个函数,就会返回 -1,即表示 10.gif比5.gif,针对这种情况,php提供了两个自然对比的函数strnatcmp,strnatcasecmp:
echo strnatcmp("10.gif", "5.gif"); // 返回 1 (>0)
echo strnatcasecmp("10.gif", "5.gif"); // 返回 1 (>0)
最新技术文章: