您现在的位置是: 首页> PHP>PHP四种重要的数据类型:字符串、数组、json、对象 所属分类:PHP

PHP四种重要的数据类型:字符串、数组、json、对象

初柒先生 2019-09-18 21:57 php】 【json】 【数组 349人已围观

简介php中字符串、数组、json、对象这四种数据类型,在开发过程中使用的最高频率。它们在一定条件下,可以相互转化,下面将详细说明这四种数据类型。

php中字符串、数组、json、对象这四种数据类型,在开发过程中使用的最高频率。它们在一定条件下,可以相互转化,下面将详细说明这四种数据类型。

php数据输出方式有:echo、print、print_r、printf、sprintf、var_dump

1、字符串

在php中字符串有三种界定符:单引号、双引号、三个小于号(<<<),单引号因为不解析处理效率最快。

    单引号:对于单引号中包含的变量,是不作解析的,只是照原样输出。(处理效率高于双引号)

    双引号:对于双引号中包含的变量,PHP会解析。

    三个小于号(<<<):主要用于一些大的文本内容,如果中间包含已定义的变量,PHP也会解析。格式是以<<<开头并加上任意字母组成头部(例如:<<<EOF),因为是用EOF组成的头部,所以尾部也要用EOF结束,需要注意是结尾那一行EOF的前面不能有任何空格、缩进、字符等。(适合写代码在变量里面)

//单引号:不解析引号里的变量
$book = 'Computer';
$str1 = 'This is $book';
echo $str1;//输出为:This is $book
//双引号:解析引号里的变量
$str2 = "This is $book";
echo $str2;//输出为:This is Computer
//三个小于号(<<<):原样输出
$str3 = <<<EOF
<div>专业的网站建设$book</div>
EOF;
echo $str3;//输出为:<div>专业的网站建设Computer</div>

(1)字符串和数组相互转换

字符串转为数组时,字符串需要按一定的格式填写,使用下面这个函数,即字符串按指定分符分割成数组。

方法:explode(separator,string,limit)
	separator:必需,规定在哪里分割字符串。
	string:必需,要分割的字符串。
	limit:可选,规定所返回的数组元素的最大数目。

数组转为字符串,数组数据按指定分割符作为间隔符转为字符串,使用下面这个函数。

方法:implode(separator,array)
	separator:可选,规定数组数据间隔符,默认空字符。
	array:必需,要结合为字符串的数组。

字符串数组互转示例:

$arr = array("zhangsan","lisi","wangwu");
$str = implode(",",$arr);
echo $str."<br>";
$str = "zhangsan,lisi,wangwu";
$arr = explode(",",$str);
print_r($arr);

(2)字符串常用函数:

ucfirst()函数:把字符串中的首字符转换为大写;
lcfirst()函数:把字符串中的首字符转换为小写;
strtolower()函数:把字符串转换为小写;
strtoupper()函数:把字符串转换为大写;
ucwords()函数:把字符串中每个单词的首字符转换为大写。

2、数组

php中数组输出数据我知道的有三种方式:var_export()函数、var_dump()函数、print_r()函数。

重点介绍var_export()函数:该函数返回的是关于传递给该函数变量的结构信息,输出结果与var_dump()类似,不同的是其返回的数据是合法的PHP代码。也就是说,var_export返回的数据,可以直接当作php代码赋值给一个变量。 而这个变量就会取得和被var_export输出的数据一样的数据类型。

例如:

$city = ['shandong'=>'jinan','henan'=>'zhengzhou',];
var_export($city);

输出结果(可以直接变量赋值的数据):

array ( 'shandong' => 'jinan', 'henan' => 'zhengzhou', )

3、json

json数据是JavaScript对象表示法(JavaScript Object Notation),用于存储和交换文本信息的语法。以键值对作为基本数据格式,用方括号保存数组数据,用大括号保存对象数据。如下:

{
	"employees": [
		{"firstName":"Bill","lastName":"Gates"},
		{"firstName":"George","lastName":"Bush"},
		{"firstName":"Thomas","lastName":"Carter"}
	]
}

(1)json转数组和对象

在PHP中Json数据的表现形式是以字符串(按json数据格式)表示,这种字符串格式可以与数组互转,也可以和对象相互转换。

    json_encode() :用于对数组或者对象数据进行JSON编码,执行成功返回JSON字符串数据,否则返回FALSE。

    json_decode():用于对JSON格式的字符串进行解码,并转为数组或者对象。

//数组=>json
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
echo json_encode($arr);//结果:{"a":1,"b":2,"c":3}
//对象=>json
$obj = new People;
$obj->name = "zhangsan";
$obj->age  = 23;
echo json_encode($obj);//结果:{"name":"zhangsan","age":23}

class People {
   public $name;
   public $age;
}
 这里提一下,json转数组或对象的函数json_decode($json,$bool),有两个参数:
    $json:json数据
    $bool:布尔值,true表示转为数据,false(默认)表示转为对象
$json = '{"name":"zhangsan","age":23}';
//json=>对象
var_dump(json_decode($json));
//结果:object(stdClass)#1 (2) { ["name"]=> string(8) "zhangsan" ["age"]=> int(23) }
//json=>数组
var_dump(json_decode($json, true));
//结果:array(2) { ["name"]=> string(8) "zhangsan" ["age"]=> int(23) }

重要问题:在不同php版本中,对"json字符串"解析存在以下问题

//使用双引号定义的json字符串转为数组,输出值为null
$json = "{'name':'tom','age':'20'}";
var_dump(json_decode($json,true));
//使用单引号定义的json字符串转为数组,能正常输出
$json = '{"name":"tom","age":"20"}';
var_dump(json_decode($json,true));

4、对象

php中对象和数组是没有太大差别,只是他们在表示方式上有所不同。对象存在的数据比数据多出对象的方法,对象转为数组也就是将对象的变成转成关联数组(忽视对象的方法),而数组转成的对象就没有了对象方法(数组数据没有保存方法)。

(1)使用数据类型对数据进行强制转换,这种方式针对的是一维数据

$objTemp = (object)array();  
$objTemp->a = 1;  
$objTemp->b = 2;  
$objTemp->c = 3;  
$arrTemp = (array)$objTemp;  
print_r($objTemp);//结果:stdClass Object ( [a] => 1 [b] => 2 [c] => 3 )
print_r($arrTemp);//结果:Array ( [a] => 1 [b] => 2 [c] => 3 ) 

(2)多维数组与对象间的转换处理:对象转数组

    __FUNCTION__:返回当前函数的名称

    get_object_vars:返回由对象属性组成的关联数组 ,也就是将对象转为数组

    array_map(): 将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组

/** 
 * 将对象转换为多维数组 
 **/  
function objectToArray($d) {  
    if (is_object($d)) {  
        $d = get_object_vars($d);  
    }  
    if (is_array($d)) {   
        return array_map(__FUNCTION__, $d); //递归
    }  
    else {  
        return $d;  
    }  
}

(3)多维数组与对象间的转换处理:数组转对象

/** 
 * 将多维数组转换为对象 
 **/  
function arrayToObject($d) {  
    if (is_array($d)) {  
		//数组强转对象
        return (object) array_map(__FUNCTION__, $d);  
    }  
    else {  
        return $d;  
    }  
}

示例:

$init = new stdClass;  
$init->foo = "Test data";  
$init->bar = new stdClass;  
$init->bar->baaz = "Testing";  
$init->bar->fooz = new stdClass;  
$init->bar->fooz->baz = "Testing again";  
$init->foox = "Just test";  
  
//转换出来
$array = objectToArray($init);  
$object = arrayToObject($array);  
  
//输出结果 
print_r($init);  
print_r($array);  
print_r($object);


很赞哦! (9)

初柒先生 2019-09-18 21:57 php】 【json】 【数组 349人已围观

站点信息

  • 建站时间:2019-09-04
  • 网站名称:初柒先生
  • 主题模板《今夕何夕》
  • 文章统计:299条
  • 文章评论:490条
  • 统计数据百度统计
  • 微信公众号:初柒先生(chuqi_sir)
  • 微信扫二维码,关注我们吧!
搜索历史:
0.079861s