PHP基础

php 类与对象

详细看这里

const

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号

class MyClass
{
const constant = 'constant value';
function showConstant() {
echo  self::constant . "\n";
}
}
echo MyClass::constant . "\n";
$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起
$class = new MyClass();
$class->showConstant();
echo $class::constant."\n"; // 自 PHP 5.3.0 起

static

详细看这里

当方法与实例关系不大时,也就是当你希望摆脱实例化的限制直接使用类中的一个方法或属性时,可以定义为 static。
此外在效率上:类名访问静态方法 > 实例访问静态方法 > 实例访问非静态成员方法
如果属性与实例的关系几乎为0时,建议定义为 const 常量

(1)、静态属性及方法不需要实例化即可调用(因为静态属性存放的位置是在类里,调用方法为 "类名::属性名");
(2)、静态方法不能调用非静态属性及方法。(因为非静态属性需要实例化后,存放在对象里);
(3)、非 static 方法能调用 static 方法是必须的(需要理解的是 static 虽然是属于类,只能说它是公共的,也属于实例)
(4)、***调用类的静态函数时不会自动调用类的构造函数***。

递归

在函数体内直接自个调用自个,但需要设置自调用的条件,若满足条件,则调用函数自身,若不满足则停止本函数的自调用,然后把目前流程的主控权交回给上一层函数来履行

1 <?php
2
3 function test($n) {
4     echo $n;
5     echo PHP_EOL;
6
7     if ($n > 0) {
8         test($n-1);
9         // return;
10     }
11
12     echo $n;
13     echo PHP_EOL;
14 }
15
16 test(2);

输出

2
1
0     // 至此条件不满足,结束自调用,将主控权交给上一层函数
0     // 紧接着执行test函数后面的语句,依次传0
1     // 传1
2     // 传2

题目:1元1瓶水,2空瓶1瓶水,3瓶盖1瓶水,计算20元能买多少瓶水?

/**
* 1元1瓶水,2空瓶1瓶水,3瓶盖1瓶水,20元多少瓶水
*
* @param total 水的总数
* @param b     空瓶
* @param l     瓶盖
*/
public static void cntTableWater(int total, int b, int l) {
// 初始化水、空瓶、瓶盖数量
int water = total, bottle = b, lid = l;
// 产生的新的水
int newWater = bottle / 2 + lid / 3;
// 新的空瓶和瓶盖
bottle = newWater + bottle % 2;
lid = newWater + lid % 3;
// 将消耗的水累计
water += newWater;
// 已经无法兑换,则输出消耗的水
if (bottle < 2 && lid < 3)
System.out.println(water);
else
cntTableWater(water, bottle, lid);
}
 最后,运行结果是113,即可以买113瓶水。程序计算很简单

php浮点运算

所有程序浮点运算一定要使用高精度函数库,因为计算机存储的小数点不一定真实。
php高精度计算问题

php高精度bcmath库

        bcadd — 将两个高精度数字相加     //      bcadd(0.1,   0.7,   2);
  bccomp — 比较两个高精度数字,返回-1, 0, 1
  bcdiv — 将两个高精度数字相除
  bcmod — 求高精度数字余数
  bcmul — 将两个高精度数字相乘
  bcpow — 求高精度数字乘方
  bcpowmod — 求高精度数字乘方求模,数论里非常常用
  bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”
  bcsqrt — 求高精度数字平方根
  bcsub — 将两个高精度数字相减

php获取原始请求

  1. get // $_GET['name'];
  2. post
    $res = file_get_contents("php://input");
    $res = json_decode($res);

    2.1 键值对 // $_POST['name'];

问号?语法

  1. 1 ? 1 : 2 // 1 正规语法
  2. 1 ?: 2 // 1 // PHP 简写
  3. 0 ?: 2 // 2
  4. js 必须走正规语法
评论数量: 0

0
点赞
51
浏览
0
评论

贡献 25