【PHP】字符串&数组

这篇具有很好参考价值的文章主要介绍了【PHP】字符串&数组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字符串类型

定义语法

引号方式:比较适合定义那些比较短(不超过一行)或者没有结构要求的字符串

1)单引号字符串:使用单引号包裹

2)双引号字符串:使用双引号包裹

$str = "hello world";
$str2 = 'hello world'

3)nowdoc字符串:没有单引号的单引号字符串

$str = <<<’边界符’
	字符串内容
边界符;

4)heredoc字符串:没有双引号的双引号字符串

$str = <<<边界符
	字符串内容
边界符;

例子:

	//heredoc结构
	$str3 = <<<EOD
		hello
EOD;
	//nowdoc结构
	$str4 = <<<'EOD'
		hello
EOD;
	var_dump($str3,$str4);
?>

Heredoc和nowdoc比引号还是要区别多一点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ce8Wcmlk-1692770514392)(C:/Users/Mango/AppData/Roaming/Typora/typora-user-images/image-20230801110215945.png)]


字符串转义

转义的含义:在计算机通用协议中,有一些特定的方式定义的字母,系统会特定处理:通常这种方式都是使用反斜杠+字母(单词)的特性:

在PHP中系统常用的转义符号:

\’:在单引号字符串中显示单引号

\”:在双引号字符串中显示双引号

\r:代表回车(理论上是回到当前行的首位置)

\n:代表新一行

\t:类似tab键,输出4个空格

$:在PHP中使用$符号作为变量符号,因此需要特定识别


单引号和双引号的区别

1、 其中单引号中能够识别\’,而双引号中就不能识别\’(下图浏览器查看的是页面源代码)

【PHP】字符串&数组,PHP,php,android,android studio

2、 双引号因为能够识别$符号,所以双引号中可以解析变量,而单引号不可以

//变量识别:
$str1 = 'abcd {$a} dfg';
$str2 = "abcd {$a} dfg";
var_dump($str1,$str2);//string(13) "abcd {$a} dfg"      string(14) "abcd hello dfg"

双引号中变量识别的规则

1)变量本身系统能够与后面的内容区分:应该保证变量的独立性,不要让系统难以区分

$a = 'hello';
$str = "abc$afd";//系统会将afd作为一个变量,而现在没有该变量的定义,所以会出错

2)使用变量专业标识符(区分),变量加上一组大括号{}

$a = 'hello';
$str = "abc{$a}fd";//系统会将afd作为一个变量,而现在没有该变量的定义,所以会出错

字符串相关函数

1)基本函数strlen():得到字符串的长度(字节为单位)

$str1 = 'abcde';
$str2 = '你好中国';
echo strlen($str1)," ",strlen($str2); //5 12

在utr8字符集下,一个中文占3字节

2)转换函数:implode(), explode(), str_split()

  • implode(连接方式,数组):将数组中的元素按照某个规则连接成一个字符串
  • explode(分割字符,目标字符串):将字符串按照某个格式进行分割,变成数组
    • 中国|北京|顺义 == array(‘中国’,‘北京’,’顺义’);
  • str_split(字符串,字符长度):按照指定长度拆分字符串得到数组

3)截取函数:trim(), ltrim(), rtrim()

trim(字符串[,指定字符]):本身默认是用来去除字符串两边的空格(中间不行),但是也可以指定要去除的内容,是按照指定的内容循环去除两边有的内容:直到碰到一个不是目标字符为止

ltrim():去除左边的 rtrim():去除右边的

4)截取函数:substr(), strstr()

substr(字符串,起始位置从0开始[,长度]):指定位置开始截取字符串,可以截取指定长度(不指定到最后)

strstr(字符串,匹配字符):字符串匹配函数,从指定位置开始,截取到最后(可以用来去文件后缀名)

$str = ' abcd e f';
echo substr($str,1,3),"<br/>"; //abc
echo strstr($str,'c');//cd e f

5)大小转换函数:strtolower(), strtoupper(), ucfirst()

strtolower:全部小写

strtoupper:全部大写

ucfirst:首字母大写

【PHP】字符串&数组,PHP,php,android,android studio

6)查找函数:strpos(), strrpos()

strpos(字符串,匹配字符):判断字符在目标字符串中出现的位置(首次)

strrpos(字符串,匹配字符):判断字符在目标字符串中最后出现的位置

【PHP】字符串&数组,PHP,php,android,android studio

7)替换函数:str_replace()

str_replace(匹配目标,替换的内容,字符串本身):将目标字符串中部分字符串进行替换

【PHP】字符串&数组,PHP,php,android,android studio

8)格式化函数:printf(), sprintf()

printf/sprintf(输出字符串有占位符,顺序占位内容…):格式化输出数据

$age = 10;
printf("hello I am Mango,My age:%d",$age);
echo sprintf("hello I am Mango,My age:%d\n",$age);

9)其他:str_repeat(), str_shuffle()

str_repeat():重复某个字符串N次

str_shuffle():随机打乱字符串

【PHP】字符串&数组,PHP,php,android,android studio


数组

数组:array,数据的组合,指将一组数据(多个)存储到一个指定的容器中,用变量指向该容器,然后可以通过变量一次性得到该容器中的所有数据。

定义方式

在PHP中系统提供多种定义数组的方式:

1、 使用array关键字:最常用的

  • $变量 = array(元素1,元素2,元素3..);
$arr = array('1',2,'hello');
var_dump($arr);//array(3) { [0]=> string(1) "1" [1]=> int(2) [2]=> string(5) "hello" }

2、 可以使用中括号来包裹数据:

  • $变量 = [元素1,元素2…];
$arr =['1',2,'hello',3.14];
var_dump($arr);//array(4) { [0]=> string(1) "1" [1]=> int(2) [2]=> string(5) "hello" [3]=> float(3.14) }

3、 隐形定义数组:给变量增加一个中括号,系统自动变成数组

$变量[] = 值1; //如果不提供下标也可以,系统自动生成(数字:从0开始

$变量[下标] = 值; //中括号里面的内容称之为下标key,该下标可以是字母(单词)或者数字,与变量命名的规则相似

$arr[] = 1;
$arr[10] = 'ten';
$arr[] = 'what number'; //默认下标是从当前前面最大的数字下标开始递增,所以这里的下标是11
$arr['key'] = 'value';
var_dump($arr);//array(4) { [0]=> int(1) [10]=> string(3) "ten" [11]=> string(11) "what number" ["key"]=> string(5) "value" }

数组特点

1)可以整数下标或者字符串下标

  • 如果数组下标都为整数:索引数组

  • 如果数组下标都为字符串:关联数组

2)不同下标可以混合存在:混合数组

3)数组元素的顺序以放入顺序为准,跟下标无关

4)数字下标的自增长特性:从0开始自动增长,如果中间手动出现较大的,那么后面的自增长元素从最大的值+1开始

5)特殊值下标的自动转换

  • 布尔值:true和false

  • 空:NULL

$arr[false] = false;
$arr[true] = true;
$arr[NULL] = NULL;
var_dump($arr);//array(3) { [0]=> bool(false) [1]=> bool(true) [""]=> NULL }

6)PHP中数组元素没有类型限制

7)PHP中数组元素没有长度限制

补充:PHP中的数组是很大的数据,所以存储位置是堆区,为当前数组分配一块连续的内存。


二维数组

多维数组:数组里面的元素又是数组。在第二维的数组元素中可以继续是数组,在PHP中没有维度限制(PHP本质并没有二维数组),但是:不建议使用超过三维以上的数组,会增加访问的复杂度,降低访问效率。

  • 二维数组:数组中所有的元素都是一维数组
$info = array(
    array('name' => 'Mango','age' => 20),
    array('name' => 'Lemon','age' => 10),
    array('orange' => '','age' => 30),
);
echo '<pre>';
var_dump($info);

//输出
array(3) {
  [0]=>
  array(2) {
    ["name"]=>
    string(5) "Mango"
    ["age"]=>
    int(20)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(5) "Lemon"
    ["age"]=>
    int(10)
  }
  [2]=>
  array(2) {
    ["orange"]=>
    string(0) ""
    ["age"]=>
    int(30)
  }
}

数组遍历

数组遍历:普通数组数据的访问都是通过数组元素的下标来实现访问,如果说数组中所有的数据都需要依次输出出来,就需要我们使用到一些简化的规则来实现自动获取下标以及输出数组元素。

$arr = array(0=>array('name' => 'Tom'), 1=>array('name' => 'Jim'));	//二维数组
//访问一维元素:$arr[一维下标]
$arr[0];	//结果:array(‘name’ => ‘Tom’);

//访问二维元素:$arr[一维下标][二维下标
$arr[1]['name'];	//Jim

foreach遍历语法

基本语法

foreach($数组变量 as [$下标 =>] $值){
	//通过$下标访问元素的下标;通过$值访问元素的值
}

通常:如果是关联数组(字母下标),就需要下标,如果是数字下标就直接访问值

$arr = array(1,2,3,4,5,6,7,8,9,10);
foreach($arr as $key => $val)
{
    echo 'key:',$key,'====value:',$val,'<br/>';
}
//输出
key:0====value:1
key:1====value:2
key:2====value:3
key:3====value:4
key:4====value:5
key:5====value:6
key:6====value:7
key:7====value:8
key:8====value:9
key:9====value:10

原理:

foreach遍历的原理:本质是数组的内部有一颗指针,默认是指向数组元素的第一个元素,foreach就是利用指针去获取数据,同时移动指针。


for循环遍历数组

for循环:基于已知边界条件(起始和结束)然后有条件的变化(规律)。因此:for循环遍历数组有对应条件

1、 获取数组长度:count(数组)得到数组元素的长度

2、 要求数组元素的下标是规律的数字

$arr = array(1,2,3,4,5,6,7);
for($i = 0,$len = count($arr);$i < $len ;$i++)
{
    printf("key:%d   val:%d",$i,$arr[$i]);
    echo '<pre>';
}

相关函数

1)排序函数:对数组元素进行排序,都是按照ASCII码进行比较,可以进行英文比较

  • sort():顺序排序(下标重排)

  • rsort():逆序排序(下标重排)

  • shuffle():随机打乱数组元素,数组下标会重排

2)指针函数

  • reset():重置指针,将数组指针回到首位
  • end():重置指针,将数组指针指导最后一个元素
  • next():指针下移,取得下一个元素的值
  • prev():指针上移,取得上一个元素的值
  • current():获取当前指针对应的元素值
  • key():获取当前指针对应的下标值

注意事项:next和prev会移动指针,有可能导致指针越界,导致数组不能使用,通过next和prev不能回到真确的指针位置。只能通过end或者reset进行指针重置

$arr = array(3,1,5,2,0);
echo next($arr)," ",next($arr),'<br/>'; //1 5 
echo prev($arr),'<br/>';//1
echo current($arr),'<br/>';//1
echo key($arr),'<br/>';//下标:1

3)其他函数

  • count():统计数组中元素的数量
  • array_push():往数组中加入一个元素(尾插)
  • array_pop():从数组中取出一个元素(尾删)
  • array_shift():从数组中取出一个元素(头删)
  • array_unshift():从数组中加入一个元素(头插)
  • array_reverse():数组元素反过来 --逆置数组
  • in_array(数值,数组):判断一个元素在数组中是否存在
  • array_keys():获取一个数组的所有下标,返回一个索引数组
  • array_values():获取一个数组的所有值,返回一个索引数组

相关题目

求斐波那契数文章来源地址https://www.toymoban.com/news/detail-672168.html

//求第n个斐波那契数
// 1 1 2 3 5 8 13...
function Fib_recursion($n)
{
    if($n == 1 || $n == 2)
        return 1;
    else 
        return Fib($n-1) + Fib($n-2);
}

function Fib_cycle($n)
{
    $f1 = 1;
    $f2 = 1;
    $f3 = 0;
    for($i = 3;$i<=$n;$i++)
    {
        $f3 = $f2 + $f1;
        $f1 = $f2;
        $f2 = $f3;
    }
    return $f2;
}
echo Fib_cycle(6);

到了这里,关于【PHP】字符串&数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP strlen()函数详解,PHP获取字符串长度

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 strlen() 可以返回 「字符串」 的 「长度」 。 语法 参数 $str :需要计算长度

    2024年02月15日
    浏览(32)
  • PHP 字符串常用函数

    strlen 获取指定字符串长度 语法: strpos 用于查找指定字符串,在源字符串 首次 出现的位置(下标),如果没找到则返回 false 注: 大小写不敏感 语法: strrpos 用于查找指定字符串,在源字符串 最后 出现的位置(下标),如果没找到则返回 false 注: 大小写不敏感 语法: st

    2024年02月06日
    浏览(35)
  • php 手机加*星 【字符串】

    场景:展示手机号时,避免暴露隐私信息,因此需要给手机号加*号  代码 输出

    2024年02月16日
    浏览(24)
  • PHP8的字符串操作1-PHP8知识详解

    字符串是php中最重要的数据之一,字符串的操作在PHP编程占有重要的地位。在使用PHP语言开发web项目的过程中,为了实现某些功能,经常需要对某些字符串进行特殊的处理,比如字符串的格式化、字符串的连接与分割、字符串的比较、查找等一系列操作。用户和系统的交互也

    2024年02月13日
    浏览(47)
  • php去除字符串两边空格空字符串换行方法

    在PHP中,可以使用以下几种方法去除字符串两边的空格、空字符串和换行符: 使用trim()函数去除字符串两边的空格和空字符串,例如: 使用preg_replace()函数去除字符串中的空格、空字符串和换行符,例如:     3、使用str_replace()函数去除字符串中的空格、空字符串和换行符,

    2024年02月05日
    浏览(38)
  • PHP反序列化漏洞-字符串逃逸

    字符串逃逸(闭合) 字符串逃逸(闭合)是一种在反序列化函数可控的情况下,通过修改序列化字符串中的敏感字符来达到字符串逃逸的方法。 具体而言,可以通过修改变量名等个数,使得序列化字符串中的字符个数与实际变量值个数不一致 。由于反序列化机制要求字符串

    2024年01月20日
    浏览(47)
  • PHP反转字符串中的每个单词

    例子 代码 解析 explode: 用空格拆分字符串为一个数组 array_map: 对数组中的每个键值执行回调方法,这里是strrev strrev: 反转字符串,即abc  - cba

    2024年02月07日
    浏览(53)
  • 新手学php之字符串变量表述与运算

    字符串变量用于包含有字符的值。 在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。 在下面的实例中,我们创建一个名为 txt 的字符串变量,并赋值为 \\\"Hello world!\\\" 。然后我们输出 txt 变量的值: 在 PHP 中,只有一个字

    2024年02月16日
    浏览(35)
  • PHP中读取(截取substr)字符串前N个字符或者从第几个字符开始取几个字符

    ```html ?php $str = \\\"123456789\\\";echo substr($str , 0 , 3);//从左边第一位字符起截取3位字符:结果:123echo substr($str , 3 , 3);//从左边第3位字符起截取3位字符:结果:456? ``` ```html ?php$rest = substr(\\\"abcdef\\\", -1);    // 返回 \\\"f\\\"$rest = substr(\\\"abcdef\\\", -2);    // 返回 \\\"ef\\\"$rest = substr(\\\"abcdef\\\", -3, 1); // 返回

    2024年02月20日
    浏览(37)
  • PHP is_numeric()函数详解,PHP判断变量是否为数字或数字字符串,is_numeric()绕过

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 is_numeric() 可以检测 「变量」 是否为 「数字」 或数字字符串。 语法 参数

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包