php的引用符号&用法

 更新时间:2016年11月25日 15:07  点击:1850
如果$a和$b指向同一内存地址,自己了不太清楚不过网站找有需要的朋友参考一下。
 代码如下 复制代码

<?php
$a='CC';
$b=$a;//$a和$b指向同一内存地址
$a='DD';
echo $b;
/*
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,
是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,
就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
当$a='DD';
由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断
自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储。
* */

echo '<hr>';
$c='ABC';
$d=&$c;//$b指向$a的内存地址,传地址赋值
$d='E';
echo $c;
/**
CC
--------------------------------------------------------------------------------
E
* */
?>

<?php
//函数的引用返回
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo '$b='.$b;
echo '<br>';
return $b;
}
$a=test();
echo '$a='.$a;//这里不是函数的引用返回,跟普通的函数调用没有区别
$a=&test();  //这种方式才是函数的引用返回。
//至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。)
//用在这里意思就是test()被绑定在$a上了。
echo '$a='.$a;
$a=6;
test();//这条语句会输出$b的值 为7
echo '$a='.$a;
/*
$b=1
$a=1$b=2
$a=2$b=7
$a=7
* */
?>

<?php
//引用传递
function printArray(&$arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);

}
//值传递
function printArray2($arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);
}
$a=array(1,2,3);
$b=$a;
//$b=&$a;
printArray($a);
print_r($b);
print_r($a);
echo '<hr>';
printArray($a);
print_r($b);
print_r($a);
/**
  2Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 )
--------------------------------------------------------------------------------
1Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 )
  * */
?>
<?php
//对象的引用
class a{
var $name="ABC";
}
$b=new a;
$c=$b;
echo '$b->name='.$b->name;//这里输出ABC
echo '<br>';
echo '$c->name='.$c->name;//这里输出ABC
echo '<br>';
$b->name="DEF";
echo '$b->name='.$b->name;
echo '<br>';
echo '$c->name='.$c->name;
echo '<hr>';
/*
在PHP5中 对象的复制 是通过引用来实现的。
上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象,
但有时你可能想建立一个对象的副本,
并希望原来的对象的改变不影响到副本 .
为了这样的目的,PHP定义了一个特殊的方法,称为__clone.
* */
$x=new a;
$y=clone $x;
$x->name='XXX';
echo '$x->name='.$x->name;
echo '<br>';
echo '$y->name='.$y->name;

/*
  $b->name=ABC
$c->name=ABC
$b->name=DEF
$c->name=DEF
--------------------------------------------------------------------------------
$x->name=XXX
$y->name=ABC
  * */
?>

介绍了php开发中常用的字符串操作函数,主要是字符查找函数,有需要的朋友可以参考一下
 代码如下 复制代码

 

<?php
//strstr:从左向右查找  返回值:字符串
//strrchr:从右向左查找 返回值:字符串
//strpos:从左向右查找  返回值:整型,假如查找的字符串不存在,则返回空
//strrpos:从右向左查找 返回值:整型
$str="天高任鸟飞,海阔凭鱼跃";//strstr:从左向右查找  strrchr:从右向左查找
echo "原始字符串:".$str."<br />";
echo "用strstr函数搜索“,”的返回结果:".strstr($str,",")."<br>";
echo "用strstr函数搜索“鸟飞”的返回结果:".strstr($str,"鸟飞")."<br>";

$str1="I have a great dream.";
echo "原始字符串:".$str1."<br />";
echo "用strrchr函数搜索“e”的返回结果:".strrchr($str1,"e")."<br>";
echo "用strrchr函数搜索“ea”的返回结果:".strrchr($str1,"ve")."<br>";

$str2="I am an abstract about abroad.";
echo "原始字符串为:".$str2."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"ab")."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"am")."<br>";
echo "abcd在字符串中第一次出现的位置为:".strpos($str2,"aman")."<br>";

$str3="I am is wang hui.";
echo "原始字符串为:".$str3."<br>";
echo "I在字符串中的最后一次出现位置为:".strrpos($str3,"I")."<br>";
echo "an在字符串中的最后一次出现位置为:".strrpos($str3,"an")."<br>";
echo "i在字符串中最后一次出现的位置为:".strrpos($str3,"i");

?>

 

这是一款用户注册的功能,可以实现简单的用户由创建数据库到注册成功,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php教程
$DB_HOST = "localhost";  //数据库教程主机位置
$DB_LOGIN = "root";  //数据库的使用账号
$DB_PASSWORD = "admin";  //数据库的使用密码
$DB_NAME = "flag"; //数据库名称

$conn= mysql教程_connect($DB_HOST, $DB_LOGIN, $DB_PASSWORD);
mysql_select_db($DB_NAME);
?>


************************222222

<?php
functiondb_query($sqlstr) {returnmysql_query($sqlstr);}
functiondb_num_rows($res) {returnmysql_num_rows($res);}
functiondb_fetch_array($res) {returnmysql_fetch_array($res);}
functiondb_fetch_object($res) {returnmysql_fetch_object($res);}
functiondb_data_seek($res,$num){return mysql_data_seek($res,$num);}
functiondb_insert_id($res) {returnmysql_insert_id($res);}
?>


 

**************************333333333333

<?
include("registry_up.htm") // 导入网页上半部
?>
<script>
functioncheck()
{
if(document.regstep1.username.value== "")
{
alert("未输入账号");
returnfalse;
}
if(document.regstep1.userpass.value== "")
{
alert("请勿使用空白密码");
returnfalse;
}
if(document.regstep1.userpass.value!= document.regstep1.userpass2.value)
{
alert("两次输入的密码不相同");
returnfalse;
}

document.regstep1.submit();

}
</script>

<script>
<!--------- 打开会员账号重复性检查功能页面的函数 BEGIN---------->
function Checkname(){
var Name = document.regstep1.username.value;
window.open("uniquecheck.php?name="+Name,"Check","width=300,height=10,status=0,scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0");
}
<!---------- 打开会员账号重复性检查功能页面的函数 END----------->
</script>

<form name="regstep1"method="post" action="registry_do.php">
<?php /*?><inputtype="submit" name="username"value="<?=$username?>">
<inputtype="submit" name="userpass"value="<?=$userpass?>">
<inputtype="submit" name="pass_rem"value="<?=$pass_rem?>">
<inputtype="submit" name="pass_ans"value="<?=$pass_ans?>">
<?php */?>

<BR>
<table width="446" border="0"bordercolor="#000000" align="center"cellspacing="0">
<tr>
<td>
<table width="440" border="0"height="220" align="center" bgcolor="#EEEEEE" cellspacing="0"cellpadding="0">
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center"><img src="images/1.GIF"width="298" height="41"></div>
</td>
</tr>
<tr>
<td>
  <div align="center">账   号</div>
</td>
<td height="18">
<divalign="center">
<input type="text"name="username" size="15">
<inputonClick="网页特效:Checkname()" type=button value="检查账号"name="button">
  </div>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密   码</div>
</td>
<td height="6" bgcolor="#FFFFFF">
<div align="center">
<inputtype="password" name="userpass" size="20">
</div>
</td>
</tr>
<tr>
<td>
<divalign="center">密 码 确 认</div>
</td>
<td height="2">
<divalign="center">
<inputtype="password" name="userpass2" size="20">
</div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密 码 提 示</div>
</td>
<td height="2" bgcolor="#FFFFFF">
<divalign="center">
<selectname="pass_rem">
<optionvalue="0">您宠物的名字</option>
<optionvalue="1">您最想去的国家</option>
  <optionvalue="2">您最喜欢的运动</option>
<optionvalue="3">您最讨厌的食物</option>
<optionvalue="4">您在家最常做什么</option>
<optionvalue="5">您最爱看的电影</option>
</select>
</div>
  </td>
</tr>
<tr>
<td>
<divalign="center">答   案</div>
</td>
<td height="2">
<divalign="center">
<input type="text"name="pass_ans" size="20">
</div>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center">
<inputtype="reset" name="reset" value="清除重填">
<inputtype="button" name="Submit" value="提交"onClick="check();">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

<?
include("registry_down.htm") // 导入网页下半部
?>

******************************44444444444

<?
include("db_conn.php");
include("db_func.php");

//增加会员账号/密码 BEGIN
$SQLStrUser= "INSERT INTO member (m_username, m_userpass, m_pass_rem, m_pass_ans)";
$SQLStrUser.= " VALUES('$username', '$userpass', '$pass_rem', '$pass_ans') ";
db_query($SQLStrUser);
//增加会员账号及密码 END


?>

<script>
alert("<?php echo "注册完成"; ?>");
  location.href = "www.111cn.net";
</script>

 

****************************55555555555555555


<?
include("db_conn.php");
include("db_func.php");

//查询注册账号名称是否包含不雅字词 BEGIN
$SQLStr= "SELECT * FROM nogood WHERE n_name LIKE '%$username%'";
$res= db_query($SQLStr);
//查询注册账号名称是否包含不雅字词 END

if(db_num_rows($res)>0) // 若查询数据有相符
{
echo"<script>";
echo"alert("请勿使用不雅名称" . $username . "为账号");";
echo"location.href = "registry1.php";";
echo"</script>";
}
?>

 

******************************6^^^^^^^^


<?
include("db_conn.php");
include("db_func.php");

//查询数据库是否有此用户名称BEGIN
$sqlstr= "SELECT * FROM member WHERE m_username='$name'";
$res= db_query($sqlstr);
//查询数据库是否有此用户名称BEGIN

if(db_num_rows($res)>0) //检查查询结果是否有数据
  echo "<br><center>此账号名称" .$name. "已被注册使用</center>";
else
  echo "<br><center>此账号名称" .$name. "尚未有人注册使用</center>";
?>

 

乱码一直是困扰初学者的一个非常大的问题。现在总结下造成乱码的原因及及解决方法,主要是mysql数据库与php页面出现乱码,下面详细的分析了这些原因。希望对大家有所帮助。

一、HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库教程编码,及连接数据库编码

二、文件在存储编码:比如文件inde.php教程,改变其存储编码为所需编码。只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略)

三、数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项。下面有一个整理,这里面也要设置成统一的编码

四、表编码:操作和第三点类似。这里就不重复了

五、字段编码:在建表的建字段的时候,有个整理。如果内容有汉字,就一定要改成统一的编码

六、连接数据库时mysql教程_select_db()后面,要加一句 mysql_query( set names utf8 )

七、 (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码。可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题

这里面有数字,整数,字母,数字+字母 超级链接 电话号码 手机等验证有需要的朋友可以参考一下

/^[0-9.-]+$/数字
/^[0-9-]+$/整数
/^[a-z]+$/i字母
/^[0-9a-z]+$/i数字+字母
/^[w-.]+@[w-.]+(.w+)+$/E-mail
/^[0-9]{5,20}$/QQ
/^http:///超级链接
/^(1)[0-9]{10}$/手机号码
/^[0-9-]{6,13}$/电话号码
/^[0-9]{6}$/邮政编码

[!--infotagslink--]

相关文章

  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • C# 中 “$” 符号的作用以及用法详解

    这篇文章主要介绍了C# 中 “$” 符号的作用以及用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C++中的循环引用

    虽然C++11引入了智能指针的,但是开发人员在与内存的斗争问题上并没有解放,如果我门实用不当仍然有内存泄漏问题,其中智能指针的循环引用缺陷是最大的问题。下面通过实例代码给大家介绍c++中的循环引用,一起看看吧...2020-04-25
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • C#中的try catch finally用法分析

    这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • error LNK2019: 无法解析的外部符号 问题的解决办法

    error LNK2019: 无法解析的外部符号 问题的解决办法,需要的朋友可以参考一下...2020-04-25
  • C# byte转为有符号整数实例

    这篇文章主要介绍了C# byte转为有符号整数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-11
  • 示例详解react中useState的用法

    useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • php中php://input的用法详细

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
  • MySQL中的主键以及设置其自增的用法教程

    1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24
  • C#中this的用法集锦

    本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。...2020-06-25
  • Java中正则表达式split()特殊符号使用详解

    这篇文章主要介绍了Java中正则表达式split()特殊符号使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-21
  • Swift中优雅处理闭包导致的循环引用详解

    这篇文章主要给大家介绍了关于Swift中优雅的处理闭包导致的循环引用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Swift具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30
  • window.onerror()的用法与实例分析

    目前在做window.onerror时上报js错误信息的事,整理下相关资料,需要的朋友可以参考下...2016-01-29
  • C语言循环结构与时间函数用法实例教程

    这篇文章主要介绍了C语言循环结构与时间函数用法,是C语言中非常重要的一个技巧,需要的朋友可以参考下...2020-04-25
  • Java解析xml文件遇到特殊符号异常的情况(处理方案)

    这篇文章主要介绍了Java解析xml文件遇到特殊符号&会出现异常的解决方案,实现思路很简单通过在读取xml文件使用SAX解析前读取reader,具体实现方法及示例代码跟随小编一起看看吧...2021-05-14
  • 详解C++数组和数组名问题(指针、解引用)

    这篇文章主要介绍了详解C++数组和数组名问题(指针、解引用),指针的实质就是个变量,它跟普通变量没有任何本质区别,指针本身是一个对象,同时指针无需在定义的时候赋值,具体内容详情跟随小编一起看看吧...2021-09-18