博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP学习笔记1
阅读量:6439 次
发布时间:2019-06-23

本文共 4603 字,大约阅读时间需要 15 分钟。

  hot3.png

PHP基础知识

    PHP使用<?php ... ?>内嵌于html中, 使用echo输出html语句. 例如:

Order processed.

';?>

    通常, 在form表单中获取的变量值存储在$_POST, $_GET, $_REQUEST. 其中submit为GET存储在$_GET中, 为POST存储在$_POST中, 默认都存储在$_REQUEST中.

    而PHP中变量以"$"开头.

一个实际例子:

orderform.html:

      
Item Quantity
Tires
Oil
Spark Plugs

info.php:

      
Your order is as follows:

'; echo $tireqty.' tires
'; echo $oilqty.' bottles of oil
'; echo $sparkqty.' spark plugs
'; ?>

这里, 变量和字符串使用点号(".")进行连接. 而如果在双引号中, 则变量会被解释, 例如:

echo $tireqty.' tires
';

等价于:

echo "$tireqty tires
";

但单引号中一切都认为是字符串.

    使用define语法定义常量:

define('PI', 3.1415926);

理解PHP变量:

$GLOBALS: 全局变量数组.

$_SERVER: 服务端变量数组.

$_GET: 使用GET方法传递过来的变量.

$_POST: 使用POST方法传递过来的变量.

$_COOKIE: 所存储的cookie变量数组.

$_ENV: 环境变量数组.

$_REQUEST: $_GET/$_POST/$_COOKIE的集合.

$_SESSION: session变量的数组.

在变量引用方面, PHP使用"&"来解决:

$a = 5;$b = $a;$a = 7; // $b依旧等于5

而如果使用了"&":

$a = 5;$b = &$a;$a = 7; // 则$b也等于7

使用unset来解除变量所关联的引用:

unset($a);

在``字符内可填写: 可执行的操作:

$out = `ls -la`;echo '
'.$out.'
';

而instanceof用于判断一个对象是否是一个特定类的实例:

class sampleClass{};$myObject = new sampleClass();if ($myObject instanceof sampleClass)  echo "myObject is an instance of sampleClass";

使用gettype/settype来读取/设置变量的类型:

$a = 56;// integerecho gettype($a).'
';settype($a, 'double');// doubleecho gettype($a).'
';

而PHP也提供了如下函数用于判断变量类型:

is_array()/is_double()/is_float()/is_real()/is_long()/is_int()/is_integer()/is_string()/is_bool()/is_object()/is_resource()/is_null()/is_scalar()/is_numeric()/is_callable()

三个特殊的测试函数:

isset(): 判断变量是否存在.

unset(): 删除变量.

empty(): 判断变量是否为空.

使用数组

使用array进行数组的初始化:

$arr = array(1, 2, 3, 4, 5);

而循环数组既可以使用for, 也可以使用foreach:

$arr = array(1, 2, 3, 4, 5);for ($i = 0; $i < count($arr); $i++) {  echo $arr[$i].' ';}echo '
';foreach($arr as $item) { echo $item.' ';}

但PHP的数组实际上为一个map结构.

$arr = array(1, 2);

实际上存储为:

$arr = array("0" => 1, "1" => 2);

而map型结构, 可使用如下的循环: foreach/each/list

$arr = array("a" => 1, "b" => 2);foreach($arr as $key => $value) {  echo $key.' => '.$value.' ';}echo '
';reset($arr);while ($ele = each($arr)) { echo $ele['key'].' => '.$ele['value'].' ';}echo '
';reset($arr);while (list($key, $value) = each($arr)) { echo $key.' => '.$value.' ';}

关联数组的函数

使用sort函数对数组进行排序:

$arr = array('Tires', 'Oil', 'Spark Plugs');sort($arr);foreach($arr as $key => $val) {  echo $key.' => '.$val.'
';}

而sort函数支持第二个参数, 用于排序的判断: SORT_REGULAR, SORT_NUMERIC, SORT_STRING.

但如果针对的是map型数组, 则可使用asort(根据value进行排序)和ksort(根据key进行排序):

$arr = array('Tires' => 100, 'Oil' => 10, 'Spark Plugs' => 4);asort($arr);// Spark Plugs => 4 Oil => 10 Tires => 100 foreach($arr as $key => $val) {  echo $key.' => '.$val.' ';}echo '
';ksort($arr);// Oil => 10 Spark Plugs => 4 Tires => 100foreach($arr as $key => $val) { echo $key.' => '.$val.' ';}echo '
';

反序情况下, 使用rsort()/arsort()/krsort()即可.

乱序可使用shuffle().

字符串操作和正则表达式

使用trim()/ltrim()/rtrim()去除字符串的空白字符.

strtoupper: 将字符串转为大写.

strtolower: 将字符串转为小写.

ucfirst: 将字符串的第一个字母大写.

ucwords: 将字符串中的每个单词的第一个字母大写.

explode进行字符串的分割存储于数组, 而implode/join将数组合并成字符串.

$content = "hello,world";$arr = explode(',', $content);// hello worldfor ($i = 0; $i < count($arr); $i++) {  echo $arr[$i].' ';}echo '
';$con = implode(',', $arr);// hello,worldecho $con;

substr(string str, int start[, int length]): 获取子字符串.

strcmp()/strcasecmp()/strnatcmp(): 比较字符串.

strlen(): 获取字符串的长度.

字符串中查找子串: strstr()/strchr()/strrchr()/stristr()

strpos()/strrpos()

替换字符串: str_replace()/substr_replace()

复用代码和编写函数

在PHP中可以使用require()或者include()来复用代码. require()和include()差不多, 唯一的区别在于当失败时候, require()提示错误, 而include()则仅仅警告.

require_once()/include_once()只加载一次文件.

reusable.php:

';?>

test.php:

'; require('reusable.php'); echo 'The script will end now.
';?>

浏览器显示:

This is the main file.Here is a very simple PHP statement.The script will end now.

PHP中, 定义函数的格式为:

function func(){  // ...}

传参部分, 也支持传递默认参数:

function my_function($arg1, $arg2=2, $arg3=4) {  echo 'arg1:'.$arg1.'
'; echo 'arg2:'.$arg2.'
'; echo 'arg3:'.$arg3.'
';}my_function(111, 333);

理解作用域

函数内声明的变量为局部变量.

函数外声明的变量为全局变量.

超级全局变量(例如$_POST等)不分局部全局.

使用require()仅仅只是内嵌文件, 并不会影响作用域.

关键字global用于定义全局变量.

变量可以使用unset()进行删除.

function fn() {  global $var;   $var = 'content';}fn();echo $var;

传参通常分为传值和传引用. 正常情况下传值, 特殊要修改传入的参数, 则传引用, 参数前加"&"即可.

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/voler/blog/841346

你可能感兴趣的文章
什么仇什么怨?游戏上线日程序员“锁库跑路”,致公司破产解散
查看>>
Vue.js开发常见问题
查看>>
解析分布式锁之Zookeeper实现(一)
查看>>
多迪就业数据显示:Java和Php哪个更利于就业?更有前景?
查看>>
Android-用style修改AlertDialog修改按钮文字颜色
查看>>
HBase Major Compaction 原理精讲与参数设置建议剖析
查看>>
React全家桶构建一款Web音乐App实战(六):排行榜及歌曲本地持久化
查看>>
Android ORM 框架:GreenDao 使用详解(基础篇)
查看>>
这次给大家带来复杂点的ajax请求该如何破?
查看>>
如果你的网站没有JavaScript
查看>>
Android跨进程组件IPCInvoker用法完全解析
查看>>
JAVA集合(二、LinkHashMap)
查看>>
前端性能优化
查看>>
安卓手机软键盘弹出后不响应onKeyDown、onBackPressed方法解决方案
查看>>
Nginx-RTMP推流(audio)
查看>>
iOS性能优化 - 工具Instruments之CoreAnimation
查看>>
linux性能优化学习笔记-pidstat
查看>>
聊聊调试的事儿
查看>>
这一文让你彻底理解Spring框架的意义
查看>>
消息中间件Kafka与RabbitMQ谁更胜一筹?
查看>>