PHP从零开始——学习笔记(三)进阶

前言

(这个前言有点长)虽说进阶,但是属于基础的部分还没有说完,那一部分是循环以及循环嵌套,这都跟C语言一样的,我就没有写了,因为也没有新知识,现在明白了C语言老师说的:“学会了C语言,其他编程语言学的时候就会省力许多。”当然在学习的时候并没有跳过,还是按部就班的学了一遍,然后发现一个之前没见过的循环:foreach循环下面单独介绍这个循环:

foreach语句

在PHP中foreach循环语句,常用于遍历数组(下面介绍,这里主要看这个语句的用法),一般有两种使用方式:不取下标、取下标。
(1)只取值,不取下标

<?php
 foreach (数组 as){
//执行的任务
}
?>

(2)同时取下标和值

<?php
foreach (数组 as 下标 =>){
 //执行的任务
}
?>

写个示例:

<?php
$books = array(
'2010'=>'鬼谷子',
'2011'=>'人性的弱点',
'2012'=>'狼道',
'2013'=>'莫非定律',
'2014'=>'山海经',
'2015'=>'红楼梦',
'2016'=>'西游记',
'2017'=>'水浒传',
'2018'=>'三国演义',
'2019'=>'金瓶梅嘿嘿',
);//10本书的编号和书名,用数组存储

//使用循环结构遍历数组,获取编号和书名  
foreach($books as  $v)//foreach($students as $key => $v)只需在这里把代码改成这样即可
{ 
    echo $v;//输出(打印)书名
	echo "<br />";
}
?>

至于数组 ,后面介绍。先看最后几行代码。Augenstern
取下标的自行实现。


说明:我以前使用浏览器编译代码,现在换编译软件了,所以我从现在往后面所学的都会是源码运行,PHP里面浏览器编译和源码还是不一样的,举个栗子:浏览器里面编译,换行符是<br />,而源码里面的换行却是\n与C语言有点相似。

进阶

数组

数组就简单介绍一下:
定义一个数组:array()
可以用array()来新建一个数组,它接受任意数量的用逗号分隔的(key)=>(value)

array( key => value
……
)
//key可以是一个整数int,或字符串string
//value可以是任意类型的值。

最后一个数组单元的逗号可以省去
看个定义一个数组的例子:

<?php
$array = array(
    "lxj" => "lalala",
    "wkx" => "xixixi",
);
//两种方法
$array = [
    "lxj" => "lalala",
    "wkx" => "xixix",
];
?>

第二种方法我专门去查了一下,这个PHP官方手册解释的是自PHP 5.4 起可以用这种方法的,短数组定义方法。

关于key

1.包含有合法的整数型字符串会被转换为整型,如“8”,会被存储为8。但是“08”不会被强制转换。因为他不是一个合法的十进制数。
2.浮点数也会被转换成整型。小数点后面的会被舍去。注意是舍去,不是四舍五入,而是全部扔了不要(哈哈,真浪费)。
3.布尔类型的也会被转换成整型,true被存储为1,而false被存储为0.
4.NULL会被转换为空字符串,null实际上会被存储为“ ”。
接着说数组:
如果在定义一个数组时多个单元都使用了同一个key,那么就会只使用最后一个,之前的都会被覆盖,看个代码:

<?php//这个代码同时反映类型强制和覆盖
$array = array(
    1 => "mary",
    "1" => "jack",
    1.5 => "rose",
    true => "lxj"
);
var_dump($array);
?>

结果呢,只会有lxj
Augenstern
PHP数组还可以有混合key的,就是数组里的变量既有整型,也有字符串。代码就不写了。也没什么可举例子的。

数组的访问

通过语法:数组名[key]
没有什么是代码解释不清的。代码上:

<?php
$array = array(
    "lxj" => "Augenstern",
    0258 => 8520
);
var_dump($array["lxj"]);
var_dump($array[0258]);
?>

这个输出的就是
Augenstern
tip:方括号和花括号能在这里互换使用,达到同样的效果。赶紧试一下去。

增加、修改、删除数组里的值

这里用一个代码就能看出怎么玩了:

<?php
$arr = array(
    "lxj" => "Augenstern",
    0258 => 8520,
);
$arr["lxj"] = "zxcv0221";//修改数组值
$arr["wkx"] = "wangkaixin";//增加一个数组值
unset($arr["wkx"]);//删除wkx这个key和其对应的值
unset($arr);//删除整个数组
?>

清晰明了。数组学习暂时到这里。

函数

用户自定义函数

函数如何定义:要定义一个函数,在PHP里面要先加上function关键词
下面看一个伪代码(不能运行)函数的例子:

<?php//这是一段伪代码,为了直观的介绍函数的简单定义而已。
function lxj($var_1, $var_2, $var_3,/*,,,,,,*/)
{
	echo "伪代码\n";
	return ...;
}//此代码不能运行
?>

函数名称自己定义,但是也不是随便,命名规则:有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。
任何有效的PHP代码都有可能出现在函数内部,甚至包含其他函数和类的定义。1.函数无需在调用之前被定义,除非是下面的函数是有条件的被定义。2.当一个函数是有条件被定义时,必须在调用函数之前定义。看个例子:

<?php
$makelizi = true;
lizi();//lizi函数还不能调用,因为它还不存在
lxj();//但是bar函数可以调用,因为bar函数不是有条件的函数。
if($makelizi){
	function lizi()
	{
		echo "lalala\n";
	}
}
//可以调用lizi函数了,因为$makelizi的值为真了。
if($makelizi) lizi();
function lxj()
{
	echo "xixixi\n";
}
?>

这个代码是可以跑的,自己跑一下对比更明显,理解更清楚。
再来一个函数套函数的代码

<?php
function lxj(){
	function wkx(){
		echo "nice,xiongdei\n";
	}
}
//这里不能直接调用wkx函数,因为他还不存在。可以理解为没有被定义。
lxj();
//现在就可以调用wkx函数了,因为lxj函数被执行了,使得wkx函数被定义。
wkx();
?>

介绍都在代码中注释了。PHP中的所有函数都具有全局作用域,可以定义在一个函数之内而在函数外面调用。相反也可以。PHP不支持函数重载,也不可能取消定义或者重定义已经声明过的函数。
注意:函数名是大小与大小写无关的,不过尽量写成一样的,养成一个好习惯。
递归函数:
PHP中还可以调用递归函数,还是来个代码看看

<?php
function lxj($f=1){
	if($f < 20){
		echo "lalala\n";
		lxj($f+1);
	}
}
lxj();
?>

递归函数的调用要注意的是避免调用超过100-200层,因为可能会堆栈崩溃从而使当前脚本终止。无限递归可视为编程错误。

函数的参数

函数的参数可以不填,使其默认参数起作用,也可以传参。
先看个通过引用办法传参的代码:

<?php
function lxj(&$string)
{
	$string .= "或者其他的";
}
$str = "这是一个字符串,";
lxj($str);
echo $str;//输出结果:这是一个字符串,或者其他的[Finished in 0.1s]
?>

或者直接传递参数,覆盖默认值

<?php
function lxj($a=10,$b=20)
{
	echo $a+$b;
}
lxj(20,25);
//运行结果:45[Finished in 0.1s]
?>

以上就是数组、函数的简单使用,再加上学过C语言,有点基础,学这个不会太吃力。提醒一下平常被大家忽略的东西,就是官方手册,像PHP、Python等编程语言都会有它的官方手册,这个最起码比起市面上的有关书籍来说,它免费(重点哈哈)。

发布了26 篇原创文章 · 获赞 12 · 访问量 3218

猜你喜欢

转载自blog.csdn.net/qq_45836474/article/details/105001575