本帖最后由 gentledream 于 2020-8-4 17:08 编辑
PHP最美,我爱PHP。整形integer整形可以是十进制,十六进制,八进制,二进制,前面可以加上正负号。八进制前加0,十六进制加0x,二进制加0b。[PHP] 纯文本查看 复制代码 $a = [
1234, // 整数
-123, // 负数
0123, // 八进制 83
0x1A, // 十六进制 26
0b11111111 // 二进制 255
];
for($i=0;$i<=4;$i++){
var_dump($a[$i]);
}
32位平台下最大约为21亿,64位平台为9E18。PHP不支持无符号integer。给定的数超出了integer的返回,会解释为为float。计算后超出会返回float。64位系统下:[PHP] 纯文本查看 复制代码 $num = 9223372036854775807;
var_dump($num);
// int(9223372036854775807)
$num = 9223372036854775808;
var_dump($num);
// float(9.2233720368548E+18)
转换为integer,可以用(int)或(integer)或者函数intval()。PHP没有整除运算符,要舍掉小数,可使用前面三种方法。
前辈的提示1.数字中的0是八进制标记,但字符串中的不是。[PHP] 纯文本查看 复制代码 $x = 0123; // 83
$y = "0123"+0; // 123 2.PHP7开始后,函数intdiv()可以整除作用。[PHP] 纯文本查看 复制代码 echo intdiv(10,3); // 3 3.字符串中,只有当开头为数字时,才能转换为整型。[PHP] 纯文本查看 复制代码 var_dump((int) "123"); // int(123)
var_dump((int) "123txt"); // int(123)
var_dump((int) "txt123"); // int(0)
var_dump((int) "txt123txt");// int(0)
var_dump((int) "123txt456txt");// int(123)
浮点型float浮点型(float)也叫浮点数(float),双精度数(double)或实数(real)。可以用以下任意一种表示。[PHP] 纯文本查看 复制代码 $a = 1.234;
$b = 1.2e3;
$c = 7E-10; 前辈的提示1.比较时[PHP] 纯文本查看 复制代码 $x = 8 - 6.4; // 1.6
$y = 1.6;
var_dump($x == $y); // false
var_dump(round($x, 2) == round($y, 2)); // true
// This happens probably because $x is not really 1.6, but 1.599999.. and var_dump shows it to you as being 1.6.
// 这可能因为$x不是真1.6而是1.5999999...,但var_dump显示它是1.6
字符串string一个字符串string就是由一系列字符组成,每个字符等同于一个字节。string最大可以2GB。字符串有四种定义方式:- 单引号
- 双引号
- heredoc语法结构
- nowdoc语法结构
单引号:[PHP] 纯文本查看 复制代码 $a = 1;
echo 'adsadsasa';
// adsadsasa
echo 'abcd
dqweqw';
// abcd dqweqw
echo 'I\'m Peter';
// I'm Peter
echo 'C:\Windows';
// C:\Windows
echo 'C:\\Windows';
// C:\Windows
echo 'You asd \n asd';
// You asd \n asd
echo 'a is $a';
// a is $a
在单引号内定义一个单引号,需要在’前加\。反斜线要使用\\。其他如\r \n等都没有特殊效果,只是字符本身。不像双引号中变量和转义序列会被替换。
序列 | 含义 | \n | 换行(ASCII 字符集中的 LF 或 0x0A (10)) | \r | 回车(ASCII 字符集中的 CR 或 0x0D (13)) | \t | 水平制表符(ASCII 字符集中的 HT 或 0x09 (9)) | \v | 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起) | \e | Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起) | \f | 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起) | \\ | 反斜线 | \$ | 美元标记 | \“ | 双引号 | \[0-7]{1,3} | 符合该正则表达式序列的是一个以八进制方式来表达的字符 | \x[0-9A-Fa-f]{1,2} | 符合该正则表达式序列的是一个以十六进制方式来表达的字符
|
变量解析当字符串使用string或者heredoc语法时才会进行解析。解析有两种语法规则,一是简单,二是复杂。简单解析用最少的代码在字符串嵌入一个变量,一个array的值,一个object的属性。[PHP] 纯文本查看 复制代码 $a = 'Peter';
$b = 'Kitty';
$arr = ['Like'];
class a
{
public $very = 'very';
}
$class = new a();
echo "$a $class->very $arr[0] $b";
// Peter very Like Kitty
复杂解析用花括号{}
[PHP] 纯文本查看 复制代码 $arr = [
'name1' => ['Peter'],
'how' => 'very'
];
class a{
public function getname(){
return 'Kitty';
}
}
$class = new a();
echo "{$arr['name1'][0]} is {$arr['how']} like {$class->getname()}";
// Peter is very like Kitty
取,修改字符串string中的字符从0开始下标,用类似数组中的[]可以对其进行获取和修改(也可以用花括号访问,比如$str{1})。[PHP] 纯文本查看 复制代码 $str = 'I love the sea';
echo $str[0]; // l
echo $str[4]; // v
$str[strlen($str)-1] = 'e';
echo $str;
// I love the see
heredoc语法结构表达字符串的形式为:<<<,然后跟上开始标记符,换行,字符串本身,然后换行,结束标记符。【结束标记符前不可有缩进】[PHP] 纯文本查看 复制代码 $str = <<<Zifu
abcde
Zifu;
echo $str; // abcde
要注意,标记符像变量一样的命名法。开始和结束标记符要一致。结束标记符行除了本身和分号外不得有任何字符。复杂示例(变量解析):[PHP] 纯文本查看 复制代码 $a = [
'name1' => ['peter'],
'how' => 'like'
];
class b{
public function getname(){
return 'kitty';
}
}
$class = new b();
$str = <<<AAA
{$a['name1'][0]} is very {$a['how']} {$class->getname()}
AAA;
echo $str;
// peter is very like kitty 在参数中的示例[PHP] 纯文本查看 复制代码 var_dump(array(<<<AAA
I LOVE YOU!
AAA
));
// array(1) { [0]=> string(11) "I LOVE YOU!" } heredoc结构中使用双引号[PHP] 纯文本查看 复制代码 $str = <<<"AAA"
I LOVE YOU
AAA;
echo $str;
// I LOVE YOU
nowdoc 结构像heredoc结构那样类似于双引号,nowdoc结构类似于单引号。他不会进行解析。定义规则则是在开始标记符处加上单引号,其他同heredoc一样。[PHP] 纯文本查看 复制代码 $str = <<<'AAA'
I LOVE YOU
AAA;
echo $str;
// I LOVE YOU 字符串运算符有两种运算符 . 和 .= 。前者为两个字符串相连。后者为简写。[PHP] 纯文本查看 复制代码 $a = 'I love ';
echo $a.'you'; // I love you
$a .= 'you';
echo $a; // I love you |