【项目实战】——商品管理的制作完整代码

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发

🅰

请添加图片描述



前言

🎶(1) 二维数组


  与一维数组相比,二维数组能够存储更加丰富的数据。相对于一维数组只有一键值维度–列,二维数组具有两个键值维度–行和列。
如果是索引数组,则分别表示数组的行和列。数组维度图描述了索引数组中一维数和二维数组的维度,如果是关联数组,则只需要将行及列中的数字改为键名和值即可。

  数组维度图:
在这里插入图片描述
在这里插入图片描述
  二维数组的本质是二维数组中存放的元素都是一维数组,创建二维数组的语法格式如下:

//创建二维数组,存放的元素为数组$arr =array(arrl,arr2,..,arrN);

  二维数组仅仅通过列键值获取数组元素:array[col],而二维数组多了一个键值维度因此,获取数组元素需要行键值和列键值:array[rowl[col]。

  创建二维数组:

<?php
//创建数组存放索引数组
$arr1 =array(array(0,0,100),array(1, 1));
print_r($arr1);
echo "<br />";
echo"第1行,第3列的值 arr1[0][2]为:". $arr1[0][2];
echo "<br />".
//创建数组存放关联数组
$arr2 = array(
array ("name"=>"商品 A","price"=>"100","img"=>"images/1.jpg"),
array("name"=>"商品 B","price"=>"200","img"=>"images/2.jpg"));
print_r($arr1);
echo "<br />";
echo"第2行,列键值为name 的值为arr2[1][name]为:".$arr2[1]["name"];
?>

  如图为结果图:
在这里插入图片描述


🎶(2) 二维数组遍历


  二维数组多了一个行维度,因此需要两个循环遍历,第一个循环负责行,第二个循环负责列。由于 for循环是以次数作为循环条件的,因此 for 循环适合索引数组。

  创建二维数组:

<?php
//创建数组存放索引数组
$arr1 = array(array(0,0,100),array(1,1),array(2,3,4,5));
print_r($arr1);
echo "<br />";
//计算数组行数
$row_num = count($arr1);
//for 循环遍历行
for($row=0;$row< $row_num; $row++){//取出数组,计算列数
$col_num = count($arr1[$row]);
//for 循环遍历列
for($co1=0;$col < $col_num; $col++){
echo $arr1[$row][$col]."     ";
}
echo "<br />";
}
//创建数组存放关联数组
$arr2 = array(
array("name"=>"商品 A","price"=>"100”","img"=>"images/1.jpg"),
array("name"=>"商品 B","price"=>"200","img"=>"images/2.jpg")
);
print_r($arr2);
echo "<br />"; 
//遍历行
foreach ($arr2 as $key=>$value){//获取一维数组后,直接通过键值获取".echo $value['name'].",".$value['price'].",".$value['img' ]."<br />";}
?>

  运行结果如图:
在这里插入图片描述


🎶(3)二维数组的排列


   维数组中可以使用sort、asort和ksort 等函数进行排序,二维数组没有直接用于排序的函数,需要自己实现。例如,排序后的商品统计表,要对里面的商品按价格从高到低的规则排序,排序后商品统计表见排序后的商品统计表。

  排序后的商品统计表

商品名称价格/元图片地址
商品A89/images/1.jpg
商品B88images/2.jpg
商品C100images/3.jpg

排序后的商品统计表

商品名称价格/元图片地址
商品c100/images/3.jpg
商品A89images/1.jpg
商品B89images/2.jpg

  在二维数组中对数组进行排序,可以利用 array_column函数和 array_multisort 函数

  anray_multisort 函数返回一个排序数组,语法格式如下:

array_multisort(arrl,sorting,order,sorting type, arr2, arr3,....arrN);

  参数order可选,默认值为SORT_ASC,表示按升序排列。也可以指定SORTDESC 按降序排列。参数type可选,规定排序类型,默认为SORT_REGULAR,表示按常规顺序排列。参数 arr1必选,arr1l中的元素值为排序的依据,一般为一维数组,参数arr2,arr3,…,arrN可选。anray_multisont 数先对第一个数组元素值进行排序,接着是后面的数组,且后面数组的顺序按照对应的第一个数组的值排列。相当于将排序的多个数组以列为单位,按第一个数组元素值进行排序。


🎶(4) 商品的显示,商品的排序和商品的查找


  新建商品的静态页面:


<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>商品管理</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"><link rel="stylesheet" href="css/weui.css"/><!-- 自定义的css --><link rel="stylesheet" href="css/demo.css"/>
</head>
<body ontouchstart>
<!-- 将顶部固定 -->
<div class="search_top"><!-- 搜索框组件 --><div class="weui-search-bar"><form class="weui-search-bar__form" method="GET" action="index.php"><div class="weui-search-bar__box"><input type="search" class="weui-search-bar__input" name="key" style="padding-left:10px" placeholder="输入查找的商品" value=""/><button class="weui-icon-search" type="submit"></button></div></form></div><!-- 操作按钮 --><div class="btn-area"><a class="weui-btn weui-btn_mini" href="index.php?sort=asc">价格升序</a><a class="weui-btn weui-btn_mini" href="index.php?sort=desc">价格降序</a><a class="weui-btn weui-btn_mini" href="index.php">显示全部</a></div>
</div>
<!-- 由于顶部导航固定,将商品显示距离顶部100px,防止给搜索遮挡 -->
<div class="goods-container">
<div class="weui-flex"><!-- 第一列 --><div class="weui-flex__item left"><div class="goods"><img src="images/1.jpg" alt=""><p class="title">华为笔记本MateBook</p><p class="price">5600</p></div></div><!-- 第二列<div class="weui-flex__item right"><div class="goods"><img src="images/2.jpg" alt=""><p class="title">华为屏幕MateView</p><p class="price">2600</p></div></div> -->
</div>
</div>
</body>
</html>

商品页面样式设置:

/*设置页面背景颜色为灰色*/
body {background-color: #ededed
}
/*设置顶部搜索组件和操作按钮固定*/
.search_top{position:fixed;width:100%;z-index: 1;
}
/*设置操作按钮背景颜色与页面背景颜色一致*/
.btn-area{background-color: #ededed;
}
.weui-btn {font-size: 13px;color: black;font-weight: normal;
}
/*设置商品距离顶部80px,防止顶部固定部分遮挡商品*/
.goods-container {padding-top:80px;background-color: #ededed;
}
/*左右列间距,注意左列右边距和右列左边距都是5px*/
.left{margin: 10px 5px 10px 10px;
}
.right{margin: 10px 10px 10px 5px;
}
/*设置列里面商品底部间距,图片圆角,背景颜色白色*/
.goods {margin-bottom:5px;border-radius: 10px;/*与img圆角配合使用*/background-color: white;text-align: center;
}
/*设置图片宽度100%,图片圆角*/
.goods img {border-radius: 10px;width: 100%;height: 100%;
}
.title {padding-top: 10px;
}
.price {color: red;
}

效果图:
在这里插入图片描述

  首页面由两部分构成,分别是置项的组件(包含搜索框和机作被围和晁示商品容器组件。搜索框中使用了表单提交关键字,表单使用 POST 方式提交数据当前页面。

商品管理的总代码:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>商品管理</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"><link rel="stylesheet" href="css/weui.css"/><!-- 自定义的css --><link rel="stylesheet" href="css/demo.css"/>
</head>
<body ontouchstart>
<?php
//定义一个二维数组,存储商品
$goods=array(array("img"=>"images/1.jpg","name"=>"华为笔记本","price"=>"10000"),array("img"=>"images/2.jpg","name"=>"华为手表","price"=>"2000"),array("img"=>"images/3.jpg","name"=>"华为路由器","price"=>"3080"),array("img"=>"images/4.jpg","name"=>"华为电视剧","price"=>"4090"),array("img"=>"images/5.jpg","name"=>"华为手机","price"=>"52223")
);//去接收排序的规则if(isset($_GET['sort'])){//定义排序规则$price=array_column($goods,'price');//获取商品数组的价格列//获取升降序$sort_type=$_GET['sort'];if($sort_type=='asc'){//为升序$sort=SORT_ASC;}else{//为降序$sort=SORT_DESC;}//调用排序的方法array_multisort($price,$sort,$goods);}//接收查询的内容if(isset($_GET['key'])){$key_value=$_GET['key'];//查找的商品$search=array();foreach($goods as $key=>$value){$index=array_search($key_value,$value);if($index!==false){$goods=array();$goods[]= $value;}}}
$goods_left=array();
$goods_right=array();
for($i=0;$i<count($goods);$i++)
{if($i%2==0){array_push($goods_left,$goods[$i]);//存放显示在左边的数据}else{array_push($goods_right,$goods[$i]);//存放显示在右边的数据}
}
?>
<!-- 将顶部固定 -->
<div class="search_top"><!-- 搜索框组件 --><div class="weui-search-bar"><form class="weui-search-bar__form" method="GET" action="test.php"><div class="weui-search-bar__box"><input type="search" class="weui-search-bar__input" name="key" style="padding-left:10px" placeholder="输入查找的商品" value=""/><button class="weui-icon-search" type="submit"></button></div></form></div><!-- 操作按钮 --><div class="btn-area"><a class="weui-btn weui-btn_mini" href="test.php?sort=asc">价格升序</a><a class="weui-btn weui-btn_mini" href="test.php?sort=desc">价格降序</a><a class="weui-btn weui-btn_mini" href="test.php">显示全部</a></div>
</div>
<!-- 由于顶部导航固定,将商品显示距离顶部100px,防止给搜索遮挡 -->
<div class="goods-container">
<div class="weui-flex"><div class="weui-flex__item left">
<?php
//创建二维数组
//遍历左的商品组,并显示在界面上foreach($goods_left as $key=>$value)
{?><div class="goods"><img src=<?php echo $value['img']?> alt=""><p class="title"><?php echo $value['name']?></p><p class="price"><?php echo $value['price']?></p></div><?php
}
?>
</div><div class="weui-flex__item right">
<?php
//创建二维数组
//遍历左的商品组,并显示在界面上foreach($goods_right as $key=>$value)
{?><div class="goods"><img src=<?php echo $value['img']?> alt=""><p class="title"><?php echo $value['name']?></p><p class="price"><?php echo $value['price']?></p></div><?php
}
?></div>
</div>
</div></body>
</html>

效果图如下:
在这里插入图片描述
提示:按自己的图片路径匹配

结束语🥇

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298193.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3. python练习题3-自由落体

3. python练习题3-自由落体 【目录】 文章目录 3. python练习题3-自由落体1. 目标任务2. 解题思路3. 知识回顾-%占位符格式化处理3.1 概述3.2 占位符的多种用法3.3 格式化操作符辅助指令3.4 将整数和浮点数格式化为字符串 4. 解题思路4.1 球第1次下落4.2 球第2次下落 5. 最终代…

C++(语法以及易错点2)

1.内联函数 1.1 概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 ​int ADD(int a,int b) {return ab; }​ 1.2 特性 1. inline是一种以空间换时间…

【Python基础教程】5. 数

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;python基础教程 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、…

Taro + vue3 小程序封装标题组件

分为没有跳转页面的title组件和 有跳转页面的title组件 我们可以把这个封装成一个组件 直接上代码 <template><div class"fixed-title-container"><div class"box"><div class"icon" v-if"isShow" click"…

mysql故障排查

MySQL是目前企业最常见的数据库之一日常维护管理的过程中&#xff0c;会遇到很多故障汇总了常见的故障&#xff0c;MySQL默认配置无法满足高性能要求 一 MySQL逻辑架构图 客户端和连接服务核心服务功能存储擎层数据存储层 二 MySQL单实例常见故障 故障1 ERROR 2002 (HY000)…

1.JavaEE进阶篇 - 为什么要学习SpringBoot呢?

文章目录 1.为什么要学框架&#xff1f;2.框架的优点展示(SpringBoot VS Servlet)2.1 Servlet 项⽬开发2.1.1 创建项⽬2.1.2 添加引⽤2.1.3 添加业务代码2.1.4 运⾏项⽬(配置tomcat)2.1.5 Maven配置2.1.5.1修改本地Maven仓库地址2.1.5.2 配置settings.xml文件2.1.5.3项目 本地仓…

C++:函数重载和引用

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习C&#xff1a;函数重载和引用&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 函数重载1.函数重载的概念为什么C支持函数重载 引用引用的概念引…

计算机网络-HTTP相关知识-基础

HTTP基础 基本概念&#xff1a;HTTP是一种计算机之间交流通信的规范&#xff0c;它允许数据在两点之间传输&#xff0c;这个过程可以包括中转或接力。HTTP不仅仅包括文本&#xff0c;还可以包括图片、音频等超文本。状态码&#xff1a;HTTP状态码分为五类&#xff1a; 2xx&…

C++的 stack和queue 的应用和实现【双端队列的理解和应用】

文章目录 stack的理解和应用栈的理解栈的模拟实现string实现stackvector实现stack queue的理解和应用队列的理解队列的模拟实现 双端队列原理的简单理解deque的缺陷为什么选择deque作为stack和queue的底层默认容器STL标准库中对于stack和queue的模拟实现stack的模拟实现queue的…

深度学习pytorch好用网站分享

深度学习在线实验室Featurizehttps://featurize.cn/而且这个网站里面还有一些学习教程 免费好用 如何使用 PyTorch 进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f

木棍【dfs搜索优化】

木棒 题目描述 输入样例&#xff1a; 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0输出样例&#xff1a; 6 5【思路】 优化 【AC代码】 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 70;int w[N], sum, length,…

C语言中的结构体:高级特性与扩展应用

前言 结构体在C语言中的应用不仅限于基本的定义和使用&#xff0c;还包含一些高级特性和扩展应用&#xff0c;这些特性和应用使得结构体在编程中发挥着更加重要的作用。 一、位字段&#xff08;Bit-fields&#xff09; 在结构体中&#xff0c;我们可以使用位字段来定义成员…

CMOS传输门与三态输出门电路

传输门&#xff08;TG&#xff09;的应用比较广泛&#xff0c;在数字电路和模拟电路中均有作用。 在数电中&#xff1a;作为基本单元电路构成各种逻辑电路&#xff1b;在模电中&#xff1a;可在取样-保持电路、斩波电路、数模转换器中传输模拟信号&#xff0c;所以又叫模拟开关…

AssetBundle在移动设备上丢失

1&#xff09;AssetBundle在移动设备上丢失 2&#xff09;Unity云渲染插件RenderStreaming&#xff0c;如何实现多用户分别有独立的操作 3&#xff09;如何在圆柱体类型的地图中编程玩家的输入 4&#xff09;Mixamo动画的根运动问题 这是第380篇UWA技术知识分享的推送&#xff…

【保姆级讲解如何安装与配置Node.js】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Java中的网络编程(一)

一、网络编程概述 什么是计算机网络把不同区域的计算机&#xff08;广义&#xff09;通过通信设备和线路连接&#xff0c;可以实现数据的传输和共享的系统。实现不同计算机之间的练习&#xff0c;必须有介质连接。网络编程是干什么的聊天-->聊天软件 QQjava语言是支持网络间…

汽车EDI:如何与奔驰建立EDI连接?

梅赛德斯-奔驰是世界闻名的豪华汽车品牌&#xff0c;无论是技术实力还是历史底蕴都在全球汽车主机厂中居于领先位置。奔驰拥有多种车型&#xff0c;多元化的产品布局不仅满足了不同用户画像的需求&#xff0c;也对其供应链体系有着极大的考验。 本文将为大家介绍梅赛德斯-奔驰乘…

MySQL故障排查与生产环境优化

目录 引言 一、故障排查 1.1 故障一 1.2 故障二 1.3 故障三 1.4 故障四 1.5 故障五 1.6 故障六 1.7 故障七 1.8 故障八 1.9 故障九 1.10 故障十 1.11 故障十一 二、 生产环境优化 2.1 硬件优化 2.2 查询优化 总结 引言 MySQL是目前企业最常见的数据库之一&…

【Redis】Redis群集的三种模式(主从、哨兵、群集)

redis群集有三种模式&#xff0c;分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cluster群集 ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主…

MySQL、Oracle查看字节和字符长度个数的函数

目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 sql drop table if exists demo; create table demo (id …