好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php中 php中赋值运算符有哪些

很多站长朋友们都不太清楚php中 ,今天小编就来给大家整理php中 ,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php函数参数中的&符号是什么意思 2、 gt;gt;和===是什么意思' title='PHP里>gt;gt;和===是什么意思'>PHP里>gt;gt;和===是什么意思 3、 php设置条形码和文字一样长度不一样 4、 php中&用法 5、 php中lt;h3gt;是甚么意思 php函数参数中的&符号是什么意思

在PHP中符号即传的是变量的引用而不是拷贝,引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,它们是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身 - 变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的紧密连接。

PHP 的引用允许你用两个变量来指向同一个内容。意思是,当你这样做时:

<?php

$a =$b

?>

这意味着 $a 和 $b 指向了同一个变量。

注: $a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。

同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中(PHP 4.0.4 以及以后版本):

<?php

$bar = new fooclass();

$foo = find_var ($bar);

?>

注: 不用 运算符导致对象生成了一个拷贝。如果你在类中用 $this,它将作用于该类当前的实例。没有用 的赋值将拷贝这个实例(例如对象)并且 $this 将作用于这个拷贝上,这并不总是想要的结果。由于性能和内存消耗的问题,通常你只想工作在一个实例上面。

尽管你可以用 @ 运算符来关闭构造函数中的任何错误信息,例如用 @new,但用 new 语句时这不起效果。这是 Zend 引擎的一个限制并且会导致一个解析错误。

引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。例如:

<?php

function foo ($var) {

$var++;

}

$a=5;

foo ($a);

?>

将使 $a 变成 6。这是因为在 foo 函数中变量 $var 指向了和 $a 指向的同一个内容。更多详细解释见引用传递。

引用做的第三件事是引用返回。

引用不是什么

如前所述,引用不是指针。这意味着下面的结构不会产生你预期的效果:

<?php

function foo ($var){

$var = $GLOBALS["baz"];

}

foo($bar);

?>

这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起,但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面,因为在函数 foo 中并没有变量 $bar(它被表示为 $var,但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定)。

引用传递

你可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:

<?php

function foo ($var) {

$var++;

}

$a=5;

foo ($a);

// $a is 6 here

?>

注意在函数调用时没有引用符号 - 只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。

以下内容可以通过引用传递:

变量,例如 foo($a)

New 语句,例如 foo(new foobar())

从函数中返回的引用,例如:

<?php

function bar() {

$a = 5;

return $a;

}

foo(bar());

?>

详细解释见引用返回。

任何其它表达式都不能通过引用传递,结果未定义。例如下面引用传递的例子是无效的:

<?php

function bar(){ // Note the missing

$a = 5;

return $a;

}

foo(bar());

foo($a = 5) // 表达式,不是变量

foo(5) // 常量,不是变量

?>

这些条件是 PHP 4.0.4 以及以后版本有的。

引用返回

引用返回用在当你想用函数找到引用应该被绑定在哪一个变量上面时。当返回引用时,使用此语法:

<?php

function find_var ($param){

/* ...code... */

return $found_var;

}

$foo = find_var ($bar);

$foo->x = 2;

?>

本例中 find_var 函数所返回的对象的属性将被设定(译者:指的是 $foo->x = 2; 语句),而不是拷贝,就和没有用引用语法一样。

注: 和参数传递不同,这里必须在两个地方都用 符号 - 来指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $foo 是作为引用的绑定,而不是通常的赋值。

取消引用

当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:

<?php

$a = 1;

$b = $a;

unset ($a);

?>

不会 unset $b,只是 $a。

再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。

引用定位

许多 PHP 的语法结构是通过引用机制实现的,所以上述有关引用绑定的一切也都适用于这些结构。一些结构,例如引用传递和返回,已经在上面提到了。其它使用引用的结构有:

global 引用

当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:

<?php

$var = $GLOBALS["var"];

?>

这意味着,例如,unset $var 不会 unset 全局变量。

$this

在一个对象的方法中,$this 永远是调用它的对象的引用。

gt;gt;和===是什么意思'>PHP里>gt;gt;和===是什么意思

这不是 PHP 的东西。这些叫字符实体,是 HTML 的东西。

在 HTML 中一些特殊字符为了能准确显示出来,使用一些特殊组合代替。

例如:在 HTML 代码中你输入多少个空格网页都只能显示一个。你只能用 来代替空格。

是 符号

< 是 < 符号

> 是 > 符号

lt;/h3gt; 被转换两次。。

</h3> 一次

</h3> 两次

php设置条形码和文字一样长度不一样

解决php字符串长度不等的方法:首先通过“mb_detect_encoding()”函数查看两个字符串的编码方式;然后查看具体字符长度;最后剔除非中文字符即可。

问题:

如图所示 咋眼看去两个一样的中文字符串“后勤保障部”,但一个长度为21 一个为15。

首先直觉可能会认为是编码方式不一样导致的,

通过mb_detect_encoding()函数查看两个字符串的编码方式 代码如下

1

2

3

4

<?phpheader("Content-Type: text/html;charset=utf-8");

 

$data[0]=$str1="后勤保障部";$data[1]=$str2="后勤保障部";

var_dump($data);//查看编码方式$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));echo "str1='".$str1."'"." 编码:".$encode1."</br>";echo "str2='".$str2."'"." 编码:".$encode2."</br>";?>

但输出结果都是UTF-8

那么是什么原因呢 ,我们在输出看下具体字符长度

1

2

3

4

<?phpheader("Content-Type: text/html;charset=utf-8");

 

$data[0]=$str1="后勤保障部";$data[1]=$str2="后勤保障部";

var_dump($data);//查看编码方式$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符//strlen,得到的是字符串所占的字节数echo "str1='".$str1."'".": 字符长度:".mb_strlen($str1).": 字节长度:".strlen($str1)." 编码:".$encode1."</br>";echo "str2='".$str2."'".": 字符长度:".mb_strlen($str2).": 字节长度:".strlen($str2)." 编码:".$encode2."</br>";?>

输出结果如下:

发现字符串str1有7个中文字符,但实际只显示了5个,也就是“后勤保障部”

通过截取str1最后两个字符查看

1

//截取str1后面两个未显示字符$res=mb_substr($str1, 5,2);echo "最后两字符:".$res."</br>";echo mb_strlen($res);

无法echo显示,但确实占有两个字符

如果实际要求这看上去一样的字符串就相等的话,需要进行处理,处理就是剔除非中文字符:

//剔除str1字串中未显示的字符(非中文字符)preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);$str1 = join('', $matches[0]);

最终代码如下

1

2

3

4

5

6

7

8

9

10

11

12

<?phpheader("Content-Type: text/html;charset=utf-8");

 

$data[0]=$str1="后勤保障部";$data[1]=$str2="后勤保障部";

var_dump($data);//查看编码方式$encode1 = mb_detect_encoding($str1,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));$encode2 = mb_detect_encoding($str2,  array("ASCII","UTF-8","GB2312","GBK","BIG5"));//当mb_strlen的内码选择为UTF-8的时候,则会将中文字符当成一个字符//strlen,得到的是字符串所占的字节数echo "str1='".$str1."'".": 字符长度:".mb_strlen($str1).": 字节长度:".strlen($str1)." 编码:".$encode1."</br>";echo "str2='".$str2."'".": 字符长度:".mb_strlen($str2).": 字节长度:".strlen($str2)." 编码:".$encode2."</br>";//截取str1后面两个未显示字符echo "</br>------------------截取str1后面两个未显示字符---------------------</br>";$res=mb_substr($str1, 5,2);echo "str1最后两字符: ".$res."</br>";echo "str1长度: ".mb_strlen($res)."</br>";//比较echo "</br>--------------------------相等比较----------------------------------</br>";echo "str1 与 str2比较: ";echo strcomp($str1,$str2)."</br>";echo "str2 与 str2比较: ";echo strcomp($str2,$str2)."</br>";//剔除str1字串中非中文preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);$str1 = join('', $matches[0]);echo "</br>---------------------剔除str1字串中非中文后----------------------</br>";echo "str1='".$str1."'".": 字符长度:".mb_strlen($str1).": 字节长度:".strlen($str1)." 编码:".$encode1."</br>";echo "str1 与 str2比较: ";echo strcomp($str1,$str2)."</br>";function strcomp($str1,$str2){

  if($str1 == $str2){

    return "相等";

  }else{

    return "不等";

  }

}

 

?>

运行结果

注:

将21字节的str1复制到phpmyadmin的sql输入框,显示如下

嗯 就是多的那两个字符

更多相关知识,请访问PHP中文网!

以上就是解决php字符串一样但长度不等的问题的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

专题推荐:php

上一篇:评价一台计算机的性能主要通过哪几个方面下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

查看更多关于php中 php中赋值运算符有哪些的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did196615
更新时间:2023-04-26   阅读:22次

上一篇: php去掉首尾空格 php去除字符串首尾空格

下一篇:php程序研发免费官方版 php免费开发工具

相关资讯

最新资料更新

  • 1.php汉字搜索 php 搜索字符串
  • 2.php余数1 php math
  • 3.php显示json php显示客户端ip和服务器ip
  • 4.口袋源码php下载 口袋com
  • 5.web安全php Web安全原理分析与实践
  • 6.php的环境安装 phpstudy安装环境
  • 7.php的token请求 php简单的token验证
  • 8.php怎么操作树 php tree
  • 9.php视频太大怎么传输 php上传视频压缩
  • 10.图片执行php代码 图片执行php代码是什么
  • 11.php数学函数 php中函数的定义
  • 12.腾讯php招聘 招聘 腾讯
  • 13.php数据抓取实例 php采集数据
  • 14.中南php哪家好 中南cp
  • 15.php获取js变量 php获取js变量值
  • 16.phphint插件下载 php 插件系统
  • 17.包含php-fpm-t的词条
  • 18.包含catflag.php的词条
  • 19.php个人博客ppt php博客模板
  • 20.macphp执行权限 macbookpro权限

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]