二、PHP基础学习之常用命令③

35. 数组

数组是一种复合数据,可以装下多个值,每个值用不同的键来区分。

<?php
$arr = array('001' => '张三', '002' => '李四');
var_dump($arr);
?>

36. 索引数组、关联数组、多维数组

索引数组,键不必有特殊意义,纯数字,例:

<?php 
$arr = array(0 => '张三', 1 => '李四', 2 => ’王五‘, 3 => ’马六‘);
var_dump($arr);
?>

关联数组,字符串做键,一般能体现单元格的内容,例:

<?php 
$arr = array('no' => '0001', name => '李四', score => 90, 'sex' => ’男‘);
var_dump($arr);
?>

多维数组,数组里面嵌套数组,层数即为维数,例:

<?php
// 多维数组
$arr = array('student' => array('lisi' => array('yuwen' => 85, 'shuxue' => 90), 'zhangsan' => array('yuwen' => 68, 'shuxue' => 96)));
print_r($arr);
?>

37. 键的规则

如果不声明键,会以0,1,2,3、、、递增来生成键。例:

<?php
// 没声明键值,自动以数字来递增填充
$arr = array('a', 'b', 'c', 'd');
print_r($arr);
?>

如果已经存在某个或几个数字键,则以最大数字键开始递增生成数字键,例:

<?php
// 部分没声明键值
$arr = array(8 => 'a', 3 => 'a', 'c', 'd');
print_r($arr);
?>

如果键声明重复了,则后面的值覆盖前面的值,例:

<?php
// 键值重复,后面的将覆盖前面的
$arr = array(3 => 'a', 3 => 'b', 'c');
print_r($arr);
?>

键可以是整数,也可以是字符串。
如果键值是浮点数,自动转成整数。
如果键值为字符串,且字符串的内容恰好是整数,也理解成整数。
例:

<?php
$arr = array(1 => '中', 1.5 => '国', '1.5' => '象', 2 => '棋', '2' => '好');
print_r($arr);

// 总结:
// 1.5 是浮点型,自动转成整型,即舍去小数点后的数字,为1,。因为前面有一个键值为1,所以覆盖前面的内容。’中‘ 被 ’国‘ 覆盖。
// ’1.5‘ 是字符串,字符串可以做键值,所以正常显示。’象‘
// ’2‘ 是字符串,但是恰好是整数,所以算是整数,因为前面已有一个键值为2,随意覆盖前面的内容。’棋‘ 被 ’好‘覆盖。
// 所以,显示 ’国‘、’象‘、’好‘
?>

38. 操作数组单元

①增加

<?php
$arr = array('a', 'b', 3 => 'c');
// 1. 无指定键值,结果:放在当前数组的最后位置
$arr[] = 'd';
print_r($arr);

// 2. 指定键值,结果:放在指定键值的位置上,如果指定键值已有,则直接覆盖
$arr[11] = 'e';
print_r($arr);

// 3. 利用函数array_push,从最后位置插入一个元素,结果:新元素被放置在最后,重新排列键值
array_push($arr, 'f');
print_r($arr);

// 4. 利用函数array_unshift,从头部压入一个元素,结果:新元素被放置在最前面,重新排列键值
array_unshift($arr, 'g');
print_r($arr);
?>

②读取

<?php
$arr = array('a', 'b', 3 => array('c', 'd'));
// 读取一维数组的元素
echo $arr[1];	// b

// 读取多维数组的元素
echo $arr[3][0];	// c
?>

③修改

<?php
// 找到相应的键值,直接修改即可
$arr = array('a', 'b', 3 => array('c', 'd'));
$arr[0] = 'A';
print_r($arr);
?>

④删除

<?php
$arr = array('a', 'b', 3 => 'c', 'd');

// 1. 删除当前数组中指定键值的元素
unset($arr[1]);
print_r($arr);

// 2. 删除数组中最后一个元素
array_pop($arr);
print_r($arr);

// 3. 删除数组中最前面一个元素
array_shift($arr);
print_r($arr);
?>

39. 循环数组

<?php
$arr = array('a', 'b', 'c', 'd');

// 1. 使用for循环,根据下标遍历。缺点:只能用于索引数组,且键值连续。
for($i = 0; $i < count($arr);; $i++)
{
	echo $i ,'~~', $arr[$i] , '<br>';
}

// 2. 使用foreach循环,根据数组元素按顺序一个一个遍历。适用于所有数组。
foreach($arr as $key => $value)
{
	echo $key ,'~~', $value , '<br>';
}

// 注意:使用foreach循环时,可以不用声明键名,根据实际情况而定,例:
foreach($arr as $value)
{
	echo $value , '<br>';
}
?>

40. 游标操作

对于数组的遍历,还可以使用游标来控制。游标,表示一个虚拟的标记,标记了当前正处于数组的哪个元素上。常见的几个游标函数:

函数描述
current()取当前游标指向的数组单元的值
next()把数组的游标往后移一位
prev()把数组的游标往前移一位
end()把数组的游标移到最后
reset()把数组的游标复位至初始位置
<?php
$arr = array('a', 'b', 'c', 'd');

// 当前游标指向
echo current($arr);		// a

// 游标后移一位
next($arr);
echo current($arr);		// b

// 游标移到最后
end($arr);
echo current($arr);		// d

/// 游标前移一位
prev($arr);
echo current($arr);	// c

// 重置游标位置
reset($arr);
echo current($arr);	// a
?>

41. 数组的常用函数

  1. 变量是否是数组:
    is_array($arr)

  2. 检测数组内是否存在某键值:
    array_key_exists(键值, 数组)

  3. 检测数组内是否存在某元素:
    in_array(值, 数组)

  4. 往数组尾部加入一个单元,并返回操作后的数组长度
    array_push(数组, 值)

  5. 从数组尾部弹出一个单元,并返回所弹单元的值
    array_pop(数组)

  6. 往数组头部压入一个单元,并返回操作后的数组长度
    array_unshift(数组, 值)

  7. 从数组的头部弹出一个单元,返回所弹单元的值
    array_shift(数组)

<?php
$arr = array(2 => 'a', 5 => 'b', '8a' => 'c', '1.5' => 'd');

// is_array
if(is_array($arr)){
	echo '该变量是数组';
}else{
	echo '该变量不是数组';
}

// array_key_exists
if(array_key_exists('1.5', $arr)){
	echo '存在该单元';
}else{
	echo '不存在该单元';
}

// in_array
if(in_array('c', $arr)){
	echo '存在该元素';
}else{
	echo '不存在该元素';
}
?>

42. 数组案例

题:一只羊,第三年生一只羊,第四年生一只羊,第五年死亡。20年后一共有多少只养?

<?php
$yang = array(1, 0, 0, 0, 0);
for($i = 1; $i <= 20; $i++){
	$tmp = $yang[2] + $yang[3];
	array_unshift($yang, $tmp);
	array_pop($yang);
}
$count = array_sum($yang);
echo '20年后一共有:'. $count;
?>

43. 超级全局变量

名称描述
$_GET地址栏上获得的值
$_POSTpost表单发送的数据
$_REQUEST基友GET,也有POST的数据
$_ENV容易暴露服务器信息,一般不允许显示
$_SERVER获取网站的域名,及当前访问的脚本,客户的IP等

test.html

<form action="test.php?id=999&username=zhangsan" method="post">
	<input type="text" name="username" />
	<input type="submit" value="提交" />
</form>

test.php

<?php
print_r($_GET);
print_r($_POST);
print_r($_REQUEST);
?>

44. 常量

define(name, value, [bool])
声明后,值不能修改,也不能销毁,也不能重新声明。

<?php
define('PI', 3.14);
echo PI;
?>

命名规范:常量名称前面不加 $,和变量一样,只不过习惯上全大写。
声明常量后,在页面任一位置都可以访问。
第三个参数代表是否区分大小写,默认FALSE,即区分大小写。

检测常量是否存在,defined(常量名)

<?php
if(defined('PI')){
	echo '常量已存在';
}else{
	define('PI', 3.14);
}
echo PI;
?>

45. 文件包含

include() 可重复引入
include_once() 只引入一次,速度慢
require() 可重复引入
require_once() 只引入一次

test.php

$age = 18;
$tmp = 'I'm from temp.php';

index.php

<?php
include('test.php');	// 相当于把test.php中的内容替换到本行
echo $age;
echo $tmp;
?>

include和require区别:
如果引入的文件不存在,include尽量往下执行,报warning;require则直接报fetal error,脚本立即停止执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值