php中的数据结构详解

简介: php中的数据结构详解

一:PHP中的数组和数据结构


1.数组的定义


  • 数组可以存入多个不同类型的数据,甚至还可以存数组,这样的数组我们叫多维数组,是一个复合数据类型。
  • 数组的英文是array

最简单的声明


$shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');


经过上面的例子我们发现,这里的数组存放了多个类型的数据,这里还有一个知识点,就是下标(索引) 的概念,数组中的第一个数据下标为0,第二个数据下标为1,依次类推,举个例子:


如果想从上面的数组中取出“true”这个参数,就能通过$shu[2]来代表“true”,即


$shu[2] =true


2.索引数组


上面讲到了索引数组的下标从0开始,那如果我们不想让他从0开始可以吗?当然是可以的,这里就要用到我们以前学的键值对应符


<?php
$kele = array(5=>'我',20=>'PHP中文网');
//打印显示$kele
echo '<pre>';
var_dump($kele);
echo '</pre>';
?>


意思就是下标为5的位置和20的位置保存数据(相当于可以指定保存)

注意 :声明数组并不一定需要arary,这样也可以


$minren = [
           '杨幂',
           '王珞丹',
           100 => '刘亦菲',
           '黄圣依',
           '范冰冰'
       ];


3.关联数组


只要数组里面有一个下标为字符串的数组,就为关联数组。例如下面这种


$rela = array(
       '帅' => '陈奕迅',
       '很帅' => '黄晓明',
       '灰常灰常帅' => '宁泽涛',
       '有男人味的大叔' => '吴秀波',
);


4.数组的操作


1.增加


$minren = array(
           '杨幂',
           '王珞丹',
           '刘亦菲',
           '黄圣依'
       );
$minren[] = '范冰冰';
//这里不给出下标位置就是在最后一位数据的后一位添加数据
$minren[100] = '范爷';
//它的下标又为几呢?


2.删除


$minren = array(
           '杨幂',
           '王珞丹',
           '刘亦菲',
           '黄圣依',
           '范冰冰'
       );
//删除时后续的数据并不会自动填补
unset($minren[3]);


5.for循环遍历数据


遍历二字,从字面解释就是一个接一个全读访问一次,显示出来。


<?php
//声明一个数组,值为1到10
$num = array(1,2,3,4,5,6,7,8,9,10);
//我们可以得到数组中元素的总个数,为10
echo count($num);
//遍历这个索引数组的话,我们就可以定义一个变量为$i
//$i 的值为0,从0开始
//可以设定一个循环条件为:$i 在下标的(9)最大值之内循环
for($i = 0 ; $i < count($num) ; $i++){
   echo $num[$i].'<br />';
}
?>


6.foeach函数遍历关联数组


我们通过上一章的内容学会了for循环遍历连续下标的索引数组。可是,我们发现我们遍历不了关联数组,也遍历不了下标不连续的索引数组。


那我们其实在学循环的时候,有一个循环是专门用来循环数组的。这个循环的基本语法就是foreach基本语法。基本格式如下:


foreach( 要循环的数组变量 as [键变量 =>] 值变量){
//循环的结构体
}

有些同学可能还是不太理解,在这里也给大家准备了一个实例


<?php
$data = [
       'fj' => '凤姐',
       'fr' => '芙蓉',
   ];
foreach($data  as $key => $value){
       echo $key . '-------' . $value . '<br />';
}
// 结果 
/*
fj-------凤姐
fr-------芙蓉
*/
?>


注意:$key 和$value并不是变量名必须得为这两个名字。你命名为其他的也可以,如 $kai => $wen是一样的。 你要清楚键赋值给了哪个变量,值赋值给了另外的哪个变量。


7.list和each函数


1.list函数

它的功能:将索引数组下标为0的对应我变量1,下标1的对应变量2,依此类推,就像下面这样


<?php
list($one , $two , $three) = array('张三' ,'李四' ,'王五');
//再次声明:单引号不结释变量,所以输出的是字符串$one
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three----'.$three.'<br />';
// 结果
/*
$one----张三
$two----李四
$three----王五
*/
?>


2.echo函数


功能:传入一个数组。它会将其中的一个元素拆为个新数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。这个比较难以理解,还是通过下面的代码给大家解释一下吧


<?php
//定义一个变量叫$kongjie
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'腿特别长特别细',
   'mei'=>'好白',
   'pl'=>'五官端正',
   'type'=>'那就是女神',
   '我是吊丝不敢跟女神搭讪'
   ];
//第一次each
$data = each($kongjie);
echo '<pre>';
var_dump($data);
echo '</pre>';
//第一次each 结果:
/*
array(4) {
  [1]=>
  string(15) "穿黑衣服的"
  ["value"]=>
  string(15) "穿黑衣服的"
  [0]=>
  string(3) "gao"
  ["key"]=>
  string(3) "gao"
}
*/
?>


读取了$kongjie中的第一个元素,将第一个元素('gao'=>'穿黑衣服的')分解开了。


分解后第一个元素变成了一个新数组。


在新数组里面,将原值(穿黑衣服的)放了索引下标1里面,同时放到了关联下标value里面。


在新数组里面,将原键(gao),放到了关联下标key里面,放到了索引下标0里面。


可以简单理解为从=号处将其分开,使得一个数据变成两个数据并构成新的数组


each的另外一个特性。读一次,向后移动一个元素。这里的元素指定是最开始的元素,而不是分割后的元素,即第一次each分割第一个元素,第二次分割第二个元素,以此类推,直到没有可以操作的元素


php今日份学习结束,(本来早就快写完了手贱按了一下撤销,什么都没了,也没备份,只能重新再写一遍了,我的难过谁能知道啊,哎) ,同志们要加油哇!


相关文章
|
3月前
|
机器学习/深度学习 存储 算法
PHP 数据结构的巅峰对决:在机器学习的舞台上,谁将主宰沉浮?
【8月更文挑战第5天】在PHP编程中,数据结构如数组、链表、栈、队列及树等对于组织与存储数据至关重要。例如,数组广泛应用于存储数据集,链表则在构建决策树时表现优异。栈和队列分别遵循后进先出与先进先出原则,在搜索算法中有不同用途。理解并选用合适的数据结构能够显著提升机器学习任务的效率与性能。
31 0
|
5月前
|
机器学习/深度学习 存储 算法
PHP中的数据结构及其在机器学习中的应用
本文探讨了PHP在机器学习中的作用,强调了数据结构的重要性。文中列举了PHP中的常见数据结构,如数组、对象、字典、链表、树和图,并解释了它们在机器学习场景下的应用。例如,数组用于特征向量,对象封装模型,字典存储特征映射,链表和树实现特定算法。通过示例代码展示了如何使用这些数据结构进行特征标准化和模型预测。文章总结指出,PHP的数据结构为机器学习提供了有效工具,随着技术发展,PHP在数据处理领域的应用将持续扩展。
42 4
|
5月前
|
存储 数据可视化 前端开发
PHP中的数据结构可视化:深入探索与实现
本文探讨了PHP中数据结构可视化的价值,强调其在理解、调试和优化代码中的作用。文中列举了数据结构如数组、栈、队列等,并介绍了三种可视化方法:使用第三方库、自定义渲染函数和集成前端工具。通过示例展示了如何使用PHP的GD库和自定义函数可视化二叉树。最后,指出数据结构可视化并非总是适用,但结合前端技术可实现更高效解决方案,并鼓励开发者充分利用此工具提升项目性能。
71 3
|
数据采集 JSON 监控
zabbix-API对接实录:关键基础设施数据清洗和封装函数(php数组函数、数据清洗、数据结构化)
zabbix-API对接实录:关键基础设施数据清洗和封装函数(php数组函数、数据清洗、数据结构化)
69 0
|
PHP 存储 C++
PHP数据结构之——链表
链表是一种在逻辑上连续、有序的数据存储结构(在物理存储单元上非连续非有序)。在我大学的时候,学习C++的数据结构课程时,最先接触的就是链表(大学是学渣别喷...) 那么链表是怎样的一种结构呢? 用“形象的”文字来描述就是: node_1-&gt;node_2-&gt;node_3-&gt;node_4-&gt;...-&gt;node_n , 每一个node包含一些存储的数据 引用
1379 0
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
136 9
|
3月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
7天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
20 1