php数组的foreach和for遍历循环,以及系统函数,自定义函数的使用,数组遍历的模板语法以及定界符单引号双引号的使用
程序员文章站
2022-04-17 18:55:58
...
数组的遍历循环
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo '数组的遍历循环'; ?></title>
</head>
<body>
<?php
$navs = [
['id' => 1, 'name' => '前端课程'],
['id' => 2, 'name' => '后端课程'],
['id' => 3, 'name' => '微信相关'],
['id' => 4, 'name' => '辅助学习'],
['id' => 5, 'name' => '可视化布局'],
];
// 用foreach来遍历
foreach ($navs as $key => $value) {
echo "</br>键{$key}的栏目是{$value['name']}";
}
// 用for来遍历
// for循环首先要获取数组的索引长度,用count(数组)来获取,跟js类似,先赋值一个i=0;然后i要小于数组的长度, i++递增
for ($i = 0; $i < count($navs); $i++) {
echo '</br>' . '键' . $i . '的栏目是' . $navs[$i]['name'] . '.';
}
?>
</body>
</html>
数组的单引号双引号定界符
<?php
// error_reporting(0);//屏蔽系统错误级别,0为屏蔽,-1位不屏蔽
$int = 23;
var_dump($int);
// 返回的是数字23
$int = '23';
var_dump($int);
// 返回的是字符23
/**
* 字符串 定义在单引号、双引号、定界符
* 单引号:无法解析变量与转义符
* 双引号、定界符:可以解析变量与转义符
* 定界符 用于输出长字符串,可以解析变量
*
*/
// 单引号示例+字符串拼接,字符串的拼接php中用 . 来拼接
$age = '5';
var_dump($age);
echo $age;
//单引号下的 字符串拼接示例, 字符串用''包裹
echo '小王今年' . $age . '岁。';
// 而单引号下如果不适用 . 拼接,将不识别变量 如下
echo '小王今年$age岁';
//双引号下将支持变量的识别解析,但不能准确的识别出变量的长短,需要用{}进行包裹,以防超出长度范围
echo "小王今年{$age}岁";
// 双引号/单引号示例2
$name = '老王';
echo "我是$name,我今年18岁。";
echo '我是$name,我今年18岁。'; //单引号下将原样的输出,并不会解析出变量
//定界符 <<<EXO 要输出的内容及变量 EXO; 以<<<大写字符开始 变量 大写字符结束;
//先写一个一维数组
$user = ['name' => '老王', 'age' => 18, 'tel' => 18888888888];
//定界符好像不能再一行,如果在一行好像不能识别
$username = <<<USER
<div>{$user['name']}今年{$user['age']},他的电话是{$user['tel']}</div>
USER;
echo $username;
//数组 是键值对的集合 $key => $value
// 示例
$user = ['name' => '老王', 'age' => 18, 'tel' => 18888888888];
//访问数组内的成员
echo $user['name']; //变量[键]
//多维数组
$users = [
['name' => '老王', 'age' => 18, 'tel' => 18888888888],
['name' => '老刘', 'age' => 19, 'tel' => 18888888889],
['name' => '老杨', 'age' => 20, 'tel' => 18888888890],
];
// 先打印他的输出集合看一下
var_dump($users);
// 打印其中的某一个值
var_dump($users[0]['name']); //多维数组中,内的数组也是有键的,键默认从0开始
//2中特殊类型 (resource,null) 保存到外部资源的类型,和空类型,这里的空仅代表变量为空
// resource 保存到外部资源的一个引用,资源是由专门的函数来建立和使用的
// 资源类型/空类型
$log = fopen('php.log', 'w'); //函数fopen()对文件操作,fopen('文件路径名','读写等操作')
var_dump($log);
// 发现一个问题,可能是权限不足,当时没有写入文件,用终端就行了
// file_put_contents 向文件内写入文件
// $read = file_put_contents('php.log', 'hello world');
$read = file_put_contents('php.log', '你好啊');
$reads = file_put_contents('php.log', '灭绝', FILE_APPEND);
var_dump($read);
var_dump($reads);
//null空类型
// null只是代表一个变量没有值 不代表变量内容为0,也不代表为''
$avatar = null;
// unset($users) //释放销毁变量 释放销毁$users变量
数组的模板语法:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><? echo 'php页面中与html混编使用短标签及php模板语法'; ?></title>
</head>
<body>
<!-- 使用短标签需要在php配置文件中开启short_open_tag = On 选项 -->
<?php
/**
* 数组的遍历操作
* 数组的遍历操作
* foreach ($arr as $key => $value){
*
* echo $value['name']
* }
*/
$navs = [
['id' => 1, 'name' => '前端课程'],
['id' => 2, 'name' => '后端课程'],
['id' => 3, 'name' => '微信相关'],
['id' => 4, 'name' => '辅助学习'],
['id' => 5, 'name' => '可视化布局'],
];
var_dump($navs);
foreach ($navs as $key => $value) {
echo "<br>当前键为{$key}栏目为{$value['name']} ";
}
?>
<!-- foreach模板语法 -->
<div>
<ul> <!-- 原生的写法,当前写法-->
<?php foreach ($navs as $key => $value) { ?>
<li><?= $value['name'] ?> </li>
<?php } ?>
</ul>
<ul>
<!-- 模板语法2: 在foreach起始部分将{}去除,替换成: 尾部用endforeach替换 -->
<?php foreach ($navs as $key => $value) : ?>
<li><?= $value['name'] ?></li>
<? endforeach ?>
</ul>
<ul>
<!-- 模板语法3:直接遍历 输出字符串 放在""双引号中 -->
<?php
foreach ($navs as $key=>$value){
echo "<li>{$value['name']}</li>";
}
?>
</ul>
</div>
<!-- php模板语法 为了省略流程控制中或者循环遍历中 的{}对齐问题 -->
<!-- foreach ...endforeach if...endif switch... endswitch while...endwhile -->
</body>
</html>
php的系统函数及自定义函数
<?php
/**
* 函数 完成特定的功能的代码块
* function 函数名(参数,参数可为多个值){
* 函数体
* return返回值
*
* }
*
*/
echo mt_rand(1, 5);
// mt_rand()其实就是一个函数,是系统内置的一个函数,随机数字函数
echo abs(-88); //整值函数
echo strtoupper('hello world'); //将小写转为大写
//快速生成一个数组
$arr = range(1, 10);
var_dump($arr); //输出十个数组
$arr = range(1, 10, 1); //随机10个数组并且间隔1
var_dump($arr); //打印
print_r($arr); //输出为数组格式
echo strlen('hello world'); //计算长度
////上面是系统定义的函数//////
// 自定义函数
// 使用function 来定义函数
function add($a, $b)
{
return $a + $b;
}
// 调佣函数
echo add(2, 3);
ob_clean();
// 变量严格区分大小写,函数不区分大小写
$username = 'mr.wang';
echo $username;
echo POW(3, 5); //求次方
Var_Dump($username);
ob_clean();
$nows = '我不想写作业,我想玩';
$res = str_replace('不想', '**', $nows);
echo $res;
// 以数组的方式替换 1比1数组替换
$res = str_replace(['不想', '玩'], ['想使劲', '使劲写作业'], $nows);
echo $res;
//购物车
?>
购物车计算总和
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>购物车</title>
</head>
<body>
<?php
$arr = [
['name' => '苹果', 'id' => '1', 'num' => 1, 'price' => 5],
['name' => '矿泉水', 'id' => '2', 'num' => 1, 'price' => 2],
['name' => '冰红茶', 'id' => '3', 'num' => 1, 'price' => 5],
['name' => '大红袍', 'id' => '4', 'num' => 1, 'price' => 120],
];
function pr($price, $num)
{
return $price * $num;
}
$total_price = 0;
foreach ($arr as $key => $value) {
$total_price += pr($value['price'], $value['num']);
echo $total_price . '<br>';
}
?>
<table border="1" >
<thead>
<tr>
<td>品名</td>
<td>id</td>
<td>数量</td>
<td>价格</td>
</tr>
</thead>
<tbody>
<?php foreach ($arr as $key => $value) { ?>
<tr>
<td><?= $value['name'] ?></td>
<td><?= $value['id'] ?></td>
<td><?= $value['num'] ?></td>
<td><?= $value['price'] ?></td>
</tr>
<?php } ?>
</tbody>
<tfoot>
</tfoot>
</table>
<p>总和为:<?php echo $total_price; ?></p>
<button>购买</button>
</body>
</html>
示例截图: