php中自加运算$a++ 与++$a笔记

 更新时间:2016年11月25日 14:57  点击:1281
想起我们N年前学习php或C语言时发会发对于$a++ 与++$a总是很不了解,不知道是先加一还是循环之后再加一,下面我来给各位详细的介绍一下吧。

这里我们来聊聊PHP的运算符号的升级版: ++,--,呵呵。

++  即自增,

--    即自减。

实际运用:

$a = 10; $a++ = ?  //先用再加,最后结果为11

$a = 10; ++$a = ?  //先加再用,最后结果为11

$a = 10;

$b = $a++ + ++$a;

echo $a;

echo $b;   //算一下吧,结果我回复解答


来一段例子,来引出重点。

$a = true;

echo $a++;

echo $a + 1;

$b = 'c';

echo $b++;

echo $b++;


上面四个输出你是否知道正确答案呢,下面是总结的一些规律,各位也可以亲自动手实验。

1. 布尔型不参与 ++ 运算, 不会进行类型转换而参与自增。所以第一个输出是1。

2. 布尔型参与算数运算如+,-,会自动进行类型转换,所以第二个输出是2。

3. PHP中字符串++表示升序,所以第三个输出是c, 第四个输出是d。

php编程代码规范我们会从几个方法来介绍,如:命名规范 常用名词 代码重构了,下面我先整理一些规范之后再整理一些笔记,希望文章对各位朋友会带来一些帮助哦。

命名规范

Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线”_”,例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线”_”,如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线”_”命名,如”HOME_URL”;

常用名词

1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名);
2>get名词(单数);
3>名词Total,表示某个东西的总数。如expenseTotal;
4>found:表示某个值是否已经找到;
5>uccess或ok:一项操作是否成功;
6>done:某个工程是否完成;
7>error:是否有错误发生;
8>result:返回的结果

代码重构

1.函数或者方法体内的代码尽量控制在一个屏幕内。
2.类中不使用的方法随机删除。
3.修改别人的类中方法,要签名。
4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。
5.尽量让每个类做自己的事,每个函数做一件事。

下面补充一些方法

一、文件格式

1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。
例如:

 代码如下 复制代码
<?php
$foo = 'foo';
2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。
例如:
if (1 == $x) {
    $indented_code = 1;
    if (1 == $new_line) {
        $more_indented_code = 1;
    }
}

3. 变量赋值必须保持相等间距和排列。
例如:

 代码如下 复制代码
$variable = 'demo';
$var      = 'demo2';

4. 每行代码长度应控制在80个字符以内,最长不超过120个字符。因为 linux 读入文件一般以80列为单位,就是说如果一行代码超过80个字符,那么系统将为此付出额外操作指令。这个虽然看起来是小问题,但是对于追求完美的程序员来说也是值得注意并遵守的规范。
5. 每行结尾不允许有多余的空格。

二、命名约定

1. 类文件都是以“.class.php“为后缀,且类文件名只允许字母,使用驼峰法命名,并且首字母大写,例如:DbMysql.class.php 。
2. 配置和函数等其他类库文件之外的文件一般是分别以“.inc.php“和”.php“为后缀,且文件名命名使用小写字母和下划线的方式,多个单词之间以下 划线分隔,例如config.inc.php , common.php,install_function.php 。
3. 确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的。
4. 类名和文件名一致(包括上面说的大小写一致),且类名只允许字母,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php 。
5. 控制器类以Action为后缀,例如 UserAction、InfoAction ,模型类以Model为后缀,例如UserModel、InfoModel ,其他类也分别以相应分类为后缀,例如Service 、Widget。
6. 方法名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,且越详细越好,应该能够描述清楚该方法的功能,例如switchModel、findPage。
7. 属性的命名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,例如tablePrefix、tableName 。
8. 对于对象成员的访问,我们必须始终使用 “get” 和 “set” 方法。例如:

 代码如下 复制代码

class Foo
{
    protected $_testObj;
    public function getTestObj()

    {
        return $this->_testObj;
    }
    public function setTestObj($testObj)
    {
        $this->testObj = $_testObj;
    }
}

在php中定义常量我们使用的是const来定义了并且const定义常量是不需要$符号了,如果使用$就是变量 了哦,下面我来一起来看看类 const常量访问

例子。const常量访问

 代码如下 复制代码

class Math {
   const num=3.14;
  
   public function showNum(){
       return self::num;
   }
}

echo Math::num."<br/>";

$math=new Math();
echo $math->showNum();

结果:

3.14
3.14

例子,变量访问

 代码如下 复制代码

class Math {
   const num=3.14;
   var   $abc='aa';
   public function showNum(){
       return self::num;
   }
}

echo Math::abc."<br/>";

提示Fatal error: Undefined class constant 'abc' in E:xxx1.php on line 12

总结:所以const是定义变量可以使用Math::num来访问而 var定义的内部变量使用Math::num访问时就会提示变量未定义了哦。

php排序算法有很多种其实我们其它程序能实现的算法在php中同样可以实现,下面我来介绍PHP中冒泡排序与快速排序例子,希望对各位会带来帮助哦。

快速排序法:

 代码如下 复制代码

function sortArray($arr){
    $count=count($arr);
    for($i=0;$i<$count-1;$i++){
        for($j=$i+1;$j<$count;$j++){
            if($arr[$i]>$arr[$j]){
                $tem=$arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$tem;
            }
        }
    }
    return $arr;
}

冒泡排序法

 代码如下 复制代码

function sortArray2($arr){
    $count=count($arr);
    for($i=0;$i<$count-1;$i++){
        for($j=0;$j<$count-1-$i;$j++){
            if($arr[$j]>$arr[$j+1]){
                $tem=$arr[$j];
                $arr[$j]=$arr[$j+1];
                $arr[$j+1]=$tem;
            }
        }
    }
   
    return $arr;
}

$a=array(23,14,35,28,45,98,12,19,1,78);

print_r(($a));
print_r(sortArray($a));
print_r(sortArray2($a));

结果

PHP中冒泡排序与快速排序例子

in_array函数是用来判断我们输入的值是否在指定数组值中存在了,但我们在使用时如果指定值为0或空时我们会发现判断并不确定了,下面我来给大家介绍此问题的原因与例子。

0.in_array常用的使用方法

 

 代码如下 复制代码

<?php
$nameslist = array("小皮皮", "小轩轩", "工了以", "可爱的小贸");

if (in_array("工了以",$nameslist))
  {
  echo "找到呀";
  }
else
  {
  echo "不知道在哪里找,找不到";
  }
?>

输出的值为

找到呀


1.期望输出的是false,但实际上是true

 代码如下 复制代码

<?php
$value='';
$falsehortrue=in_array($value,array(0,1));
var_dump($falsehortrue);
//bool(true)
?>

2.使用in_array的第三个类型比较参数后,输出结果与期望相同输出的是false

 代码如下 复制代码

<?php
$value='';
$falsehortrue=in_array($value,array(0,1),true);
var_dump($falsehortrue);
// bool(false)
?>

总结,php in_array函数对于空值与0或1时我们需要带参数 true来验证哦,否则可能出现准情况。

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24