您的位置:首页技术文章
文章详情页

php基础字符串与数组知识点讲解

【字号: 日期:2022-06-06 14:32:57浏览:27作者:猪猪
目录
  • 字符串
    • 打印
    • 字符串–引号
    • 字符串–多行引号
  • 数组-对象
    • 索引数组
    • 关联数组

字符串

打印

打印函数

echo: 打印值,用于单值
print_r(): 人类可读方式打印,用于数组
var_dump():打印结构和类型,一般用于对象

数据类型一般分为字符串,数值,布尔,数组

//单值
$data="我是php";
echo $data; // 我是php
$data2 = 123;
echo $data2; // 123
$data3 = true;
echo $data3; // 1
// $data4打印的为空
$data4 = false;
echo $data4; // 

如果使用echo打开布尔类型时,打开true的话,会打印出1,而打开false时,会打印为空

如果使用var_dump()来打印的话,那么就可以正确的打印出来了

$data3 = true;
var_dump($data3); // bool(true)
$data4 = false;
var_dump($data4); // bool(false)

但是如果使用print_r()呢?会打印什么呢?试一下吧

$data3 = true;
$data4 = false;
print_r($data3); // 1
print_r($data4); //

使用print_r()同样的,跟echo打印的内容是一个的,true为1,false为空

echo只能打印单值,不能打印数组对象;

var_dump()可打印单值,也可打印数组对象;

$arr1 = ["小明","小李","小刚"];
var_dump($arr1); // array(3) { [0]=> string(6) "小明" [1]=> string(6) "小李" [2]=> string(6) "小刚" }

字符串–引号

  • 单引号: 适合无变量,无转义字符
  • 双引号: 适合有变量,有转义字符
$title = "文章标题";
echo "<a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >$title</a>". "<br>"; // <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >$title</a>
echo "<a href="#">$title</a>"; // <a href="#" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >文章标题</a>

上面的两条代码,第二条完整的打印出我想要的内容了

所以,双引号是可以放变量的,那假如有多行的字符串时,怎么办呢

字符串–多行引号

如果一个字符串中,有多行的话,就可以使用nowdocheredoc

$title = "三字经";
$str = <<< doc
<h4>$title</h4>
人之初,性本善。性相近,习相远。
苟不教,性乃迁。教之道,贵以专。
昔孟母,择邻处。子不学,断机杼。
窦燕山,有义方。教五子,名俱扬。
doc;
echo nl2br($str);
// <h4>三字经</h4><br />
// 人之初,性本善。性相近,习相远。<br />
// 苟不教,性乃迁。教之道,贵以专。<br />
// 昔孟母,择邻处。子不学,断机杼。<br />
// 窦燕山,有义方。教五子,名俱扬。

上面的代码已正常打印出来

在这里说明一下,doc和结束的doc都可以随便命名的,但是名称必须要一样就可以了,上面的开始doc默认是双引号的,单引号可自行测试

数组-对象

数组有分索引数组和关联数组

索引数组

下面定义的$data就是索引数组,中括号里面以=>为区分,左边数字为索引,右边为值

$data = [1=>"小明",2=>"小李",3=>"小张",4=>"小刚"];

同样的,跟javascript类型,数组中的索引可以不写,那么默认索引将会从0开始

$data = ["小明","小李","小张","小刚"];

那么我们直接输入看下是怎么样的

$data = [1=>"小明",2=>"小李",3=>"小张",4=>"小刚"];
print_r($data);
// Array ( [1] => 小明 [2] => 小李 [3] => 小张 [4] => 小刚 )
$data = ["小明","小李","小张","小刚"];
print_r($data);
// Array ( [0] => 小明 [1] => 小李 [2] => 小张 [3] => 小刚 )

可以看出来,输出的东西是一样的,只是索引却不一样,第一条索引从1开始,第二条从0开始

但是这里我们就会有一个新的需求了,这个数组看起来很费劲,那么我们能不能格式化一下呢

$data = ["小明","小李","小张","小刚"];
$str = print_r($data, true);
echo "<pre>$str</pre>";
// Array
// (
//     [0] => 小明
//     [1] => 小李
//     [2] => 小张
//     [3] => 小刚
// )

这样就清晰很多了

当然也有另外的方法,比如使用printf(模板,插值):

$data = ["小明","小李","小张","小刚"];
// 这里要说明一下,print_r($str, bool)第二个变量如果为false,直接输入结果,如果为true,不输出,直接将结果赋值给一个变量
$str = print_r($data, true);
// %s: string, %d: integer, %f: float
printf("<pre>%s</pre>",$str);
// Array
// (
//     [0] => 小明
//     [1] => 小李
//     [2] => 小张
//     [3] => 小刚
// )

输出的内容跟上面是一样的

索引数组解构

$data = ["小明","小李","小张","小刚"];
list($name1, $name2, $name3, $name4) = $data;
echo $name1; // 小明
echo $name4; // 小刚

关联数组

下面的数组就是关联数组,打印一下看看

$data = ["name"=>"小明","age"=>18,"job"=>"工程师","address"=>"中国"];
print_r($data);
// Array ( [name] => 小明 [age] => 18 [job] => 工程师 [address] => 中国 )

关联数组=>左边的是键,右边的是值

关联数组解构

$data = ["name"=>"小明","age"=>18,"job"=>"工程师","address"=>"中国"];
["name"=>$name, "age"=>$age, "job"=>$job, "address"=>$address] = $data;
echo $name; // 小明

快速解构关联数组

$data = ["name"=>"小明","age"=>18,"job"=>"工程师","address"=>"中国"];
extract($data);
printf("%s, %d, %s, %s", $name, $age, $job, $address); // 小明, 18, 工程师, 中国

到此这篇关于php基础字符串与数组知识点讲解的文章就介绍到这了,更多相关php字符串与数组内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

标签: PHP
相关文章: