速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array
作者:webabcd
介绍
速战速决 之 PHP
- 数据类型 bool, int, float, string, object, array
示例
1、数据类型: bool, int, float, string, object
basic/type1.php
<?php
/**
* 数据类型: bool, int, float, string, object
*/ // 布尔类型(true, false 不分大小写)
$b = true;
if ($b)
{
echo "true";
echo "<br />";
}
$b = false;
if (!$b)
{
echo "false";
echo "<br />";
} // 整型
$i = 100;
echo $i;
echo "<br />";
// 八进制(以 0 开头)
$i = 0144; // 等于十进制的 100
echo $i;
echo "<br />";
// 十六进制(以 0x 开头)
$i = 0x64; // 等于十进制的 100
echo $i;
echo "<br />"; // 浮点型
$f = 3.14;
echo $f;
echo "<br />";
if (!is_nan($f)) // 通过 is_nan 函数来判断一个变量的值是否不是数字类型
{
echo $f;
echo "<br />";
}
if ($f == 1.11 + 2.03) // false
{
echo "注意不要用 == 来比较两个浮点型变量";
echo "<br />";
}
if (bccomp($f, 1.11 + 2.03, 2) == 0) // true
{
echo "请用 bccomp 函数来比较两个浮点型变量";
echo "<br />";
} // 字符串类型
$s = 'abc$i\$';
echo $s; // output: abc$i\$
echo "<br />";
$s = "abc$i\$";
echo $s; // output: abc100$
echo "<br />";
if (is_string($s)) // 通过 is_string 函数来判断一个变量的值是否是字符串类型
{
echo "$s 是字符串";
echo "<br />";
} // 字符串的格式化输出
$s = sprintf("string: %s, int: %d", "xyz", 100);
echo $s;
echo "<br />"; // heredoc 结构(通过“<<<标识符”和“标识符”包围起来,中间包围的就是字符串内容,变量和转移符会被解析)
$h = <<<XXX
echo $s;
\\
XXX;
echo $h;
echo "<br />";
/*
上面 echo $h; 输出的内容如下:
echo abc100$;
\
*/ // nowdoc 结构(通过“<<<'标识符'”和“标识符”包围起来,中间包围的就是字符串内容,变量和转移符不会被解析)
$n = <<<'YYY'
echo $s;
\\
YYY;
echo $n;
echo "<br />";
/*
上面 echo $n; 输出的内容如下:
echo $s;
\\
*/ // object 类型
$obj = (object)"sss"; // 将一个变量转换为对象时,系统会创建一个内置类,该类的 scalar 属性即为原变量的值
echo $obj->scalar; // output: sss
echo "<br />"; // NULL 类型(NULL 不分大小写)
$n1; // 未赋值则为 null
$n2 = NULL;
if ($n1 == null)
{
echo "null"; // output: null
echo "<br />";
}
if ($n2 == null)
{
echo "null"; // output: null
echo "<br />";
} /*
* 数据类型间的显示转换
* (int)
* (bool)
* (float)
* (string)
* (array)
* (object)
*/ // 数据类型间的隐式转换
$v = "1"; // 字符串类型
echo $v; // output: 1
echo "<br />";
$v = 2 + $v; // 隐式转换为整型
echo $v; // output: 3
echo "<br />";
2、数据类型: array
basic/type2.php
<?php
/**
* 数据类型: array
*/ // 定义数组(数组中的 key 索引为从 0 开始的递增的整型)
$array0 = array(1, 2, 3, 4);
var_dump($array0); // 定义数组
$array1 = array
(
"a" => "abx",
"x" => "xyz",
);
var_dump($array1); // 在 php 5.4 之后可以通过 [] 定义数组
$array2 =
[
"a" => "abx",
"x" => "xyz",
];
var_dump($array2); // key 是 integer 类型或 string 类型,如果是其他类型的话会被自动转换为 integer 类型或 string 类型
// key 可以 integer 和 string 两种类型混合存在
// key 为可选项,如果未指定的话,则 PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名,如果没有则从 0 开始
$array3 = array
(
"a" => "abc",
"x" => "xyz",
100 => "111",
100.99 => "222",
1 => "333",
true => "444",
"a",
"b",
"c"
);
var_dump($array3);
/*
* 上面数组定义的结果如下:
* 'a' => string 'abc'
* 'x' => string 'xyz'
* 100 => string '222'
* 1 => string '444'
* 101 => string 'a'
* 102 => string 'b'
* 103 => string 'c'
*/ // 通过 [] 指定数组字符串类型的 key 并获取其值
echo $array3["a"]; // output: abc
echo "<br />";
// 通过 {} 指定数组字符串类型的 key 并获取其值
echo $array3{"a"}; // output: abc
echo "<br />";
// 通过 [] 指定数组整型类型的 key 并获取其值(注:这里不是指位置 100 的元素,而是指 key 为 100 的元素)
echo $array3[100]; // output: 222
echo "<br />";
// 通过 {} 指定数组整型类型的 key 并获取其值(注:这里不是指位置 100 的元素,而是指 key 为 100 的元素)
echo $array3{100}; // output: 222
echo "<br />"; // 修改数组中指定 key 的值
$array3["a"] = "aaa";
echo $array3["a"]; // output: aaa
echo "<br />";
// 通过 key 和 value 为数组添加新元素(在数据最后一个元素的后面添加)
$array3[50] = "d";
echo $array3[50]; // output: d
echo "<br />";
// 仅通过 value 为数组添加新元素(在数据最后一个元素的后面添加),key 值将自动使用之前用过的最大 integer 键名加上 1 作为新的键名,如果没有则从 0 开始
$array3[] = "e";
echo $array3[104]; // output: e
echo "<br />"; // 遍历数组
foreach ($array3 as $i => $value)
{
// 销毁数组中的指定元素
unset($array3[$i]);
}
var_dump($array3);
// 之前通过 unset 销毁了每个数组元素,但是数组内部的 key 索引不会被破坏,如下例,其 key 值会由系统分配为 105
$array3[] = "xxx";
echo $array3[105]; // output: xxx
echo "<br />"; // 销毁指定的变量,如果是销毁数组的话,则数组内部的 key 索引也会被破坏
unset($array3);
var_dump($array3);
// 由于之前数组内部的 key 索引被破坏了,所以下例中,其 key 值会由系统分配为 0
$array3[] = "yyy";
echo $array3[0]; // output: yyy
echo "<br />"; // 将任意变量转换为数组时,数组的第一个元素即为该变量本身
$s = "sss";
$array4 = (array)$s;
echo $array4[0]; // output: sss
echo "<br />"; // 通过 array_values 可以重建数组内部的 key 索引
$array5 = array
(
"a" => "abx",
"x" => "xyz",
0 => "123",
);
$array5 = array_values($array5); // 无论之前的 key 是什么,在 array_values 之后,数组内的 key 索引都将变为从 0 开始递增的整型数据
var_dump($array5); // 通过 list 函数将数组中的成员依次赋值给指定的变量
// 注意:array[0] 对应 list 的 1 个参数,array[1] 对应 list 的 2 个参数......(这里的 array[0], array[1] 不是指第 0 个元素, 第 1 个元素,而是 key 为 0 的元素, key 为 1 的元素)
list ($r1, $r2, $r3) = $array5;
echo "$r1, $r2, $r3"; // output: abx, xyz, 123
echo "<br />";
OK
[源码下载]
速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array的更多相关文章
- [Swift通天遁地]五、高级扩展-(6)对基本类型:Int、String、Array、Dictionary、Date的扩展
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Tuple<int, int> Dictionary<string, object>妙用
Tuple<int, int> Dictionary<string, object>妙用
- C++中int,float,string,char*的转换(待续)
//float转string char a[100]; float b = 1.234; sprintf(a, "%f", b); string result(a); //int转 ...
- python基础与数据类型(int, float, str, list)
目录 python多版本共存 在cmd窗口进入不同版本的python环境 在pycharm中切换不同的版本 python语法之注释 python变量与常量 变量 变量的本质 变量的命名规范 常量 py ...
- String, JSONArray , JSONObject ,Map<String, Object> 与对象
String pic = "[{\"picServiceUrl\": \"0f4bb44afb2e48d48b786d3bbdeec283/20180408/6 ...
- 8、Python简单数据类型(int、float、complex、bool、str)
一.数据类型分类 1.按存值个数区分 单个值:数字,字符串 多个值(容器):列表,元组,字典,集合 2.按可变不可变区分 可变:列表[],字典{},集合{} 不可变:数字,字符串,元组().bool, ...
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。
1.string转换为int a.采用标准库中atoi函数,对于float和龙类型也都有相应的标准库函数,比如浮点型atof(),long型atol(). 他的主要功能是将一个字符串转化为一个数字,在 ...
- Java基础【基本数据类型包装类、int与String 之间的相互转换】
为什么会有基本类型包装类? 将基本类型数据类型封装成对象,这样的好处可以在对象中定义更多方法操作该数据. 包装类常用的操作就是用于基本数据类型与字符串之间的转换 问题:int a=100; 为什么不能 ...
- C++11中int,float,double与string的转化
在C++11中可以使用std::to_string()函数将数值转换为string格式,十分方便. 以下部分来选自cplusplus.com. std::to_string string to_str ...
随机推荐
- 跟我一起云计算(4)——lucene
了解lucene的基本概念 这一部分可以参考我以前写的博客: http://www.cnblogs.com/skyme/tag/lucene/ lucene是什么 下图是一个很好的说明: 1.luce ...
- 人机大战之AlphaGo的硬件配置和算法研究
AlphaGo的硬件配置 最近AlphaGo与李世石的比赛如火如荼,关于第四盘李世石神之一手不在我们的讨论范围之内.我们重点讨论下AlphaGo的硬件配置: AlphaGo有多个版本,其中最强的是分布 ...
- swift 加载 storyboard 里的UIViewController
let storyBoard:UIStoryboard! = UIStoryboard(name: "Main", bundle: nil) let deskVC:DeskView ...
- WebApi系列~dynamic让你的省了很多临时类
回到目录 dynamic这个动态类型早在.net3.5时就已经出现了,当时是伴随的Linq一起让我们认识的,但在使用时总觉得有点别扭,因为它是internal的,所以不能跨程序集使用,这对于分层开发的 ...
- Js~对数组进行分组户数
在sql里有group by,主要对数据结果集进行分组统计,而对于JS来说,有时我们也需要这种功能,例如一个数据{"dog","cat","dog&q ...
- 【SVN多用户开发】代码冲突&解决办法
SVN是一款集中式的代码存储工具,可以帮助多个用户协同开发同一应用程序. 但是SVN不能完全代替人工操作,有时也需要程序员自己进行沟通确认有效的代码. 下面就简单的看一下,常见的代码冲突以及解决方法. ...
- 如何把IP转换成经纬度(Java版)
经常有这种需求,拥有用户的IP地址,想要在地图上显示用户的访问量.这个时候就需要用到经纬度...应为一般的地图插件都是基于经纬度的. 那么问题来了,如何把IP转换成经纬度? 百度API 最国产的方式, ...
- Android笔记——活动的生命周期
一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...
- sql 循环处理表数据中当前行和上一行中某值相+/-
曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难. 以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的 ...
- Callable、Future、RunnableFuture、FutureTask的原理及应用
1. Callable.Future.RunnableFuture.FutureTask的继承关系 在多线程编程中,我们一般通过一个实现了Runnable接口的对象来创建一个线程,这个线程在内部会执行 ...