移动网站开发教程四,php自定义函数及数组
一、自定义函数
自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下:
function funname(arg1, arg2, arg3......){
//TODO
return values;
}
代码如下 | 复制代码 |
<?php function fun($m, $n){ if($m==0 || $n==0){ return 0; }else{ $a=$m*$n; return $a; } } $p=2; $h=3; echo $p."*".$h."=".fun($p,$h); ?> |
下面再举一个可变参数的函数
代码如下 | 复制代码 |
<?php /* function fun($m, $n){ if($m==0 || $n==0){ return 0; }else{ $a=$m*$n; return $a; } } $p=2; $h=3; echo $p."*".$h."=".fun($p,$h); */ function fun($m, $n=1, $x=2){ $a=$m*$n*$x; return $a; } $p=2; echo fun($p)."<br>"; // 2*1*2 = 4 echo fun($p, 3)."<br>"; // 2*3*2 = 12 echo fun($p, 3, 3)."<br>"; // 2*3*3 = 18 ?> |
再来看看自定义函数引用传递
代码如下 | 复制代码 |
<?php /* function fun($m, $n){ if($m==0 || $n==0){ return 0; }else{ $a=$m*$n; return $a; } } $p=2; $h=3; echo $p."*".$h."=".fun($p,$h); */ /* function fun($m, $n=1, $x=2){ $a=$m*$n*$x; return $a; } $p=2; echo fun($p)."<br>"; // 2*1*2 = 4 echo fun($p, 3)."<br>"; // 2*3*2 = 12 echo fun($p, 3, 3)."<br>"; // 2*3*3 = 18 */ function fun(&$n){ $n=$n*$n; } $p=2; fun($p); echo $p; ?> |
二、数组定义赋值
1、数组基本写作格式
简单形式:array(值1, 值2, 值3, .......)
array("aa", 12, true, 2.2, "test", 50); //通过数组下标获得数据
完整形式:array(键1=>值1, 键2=>值2, ......)
array("title"=>"aa", "age"=>20); //只能通过键名获得数据
2、创建数组的方式
代码如下 | 复制代码 |
//第一种 $arr1=array(11, 22, 33, "44"); //第二种 $arr2=array('a'=>'11', 'b'=>'22'); //第三种 $arr3[0]='20'; $arr3[1]='30'; |
三、数组操作
1、修改
$arr=array(11, 22, 33, 44);
$arr[0]=55; //数组变为$arr=array(55, 22, 33, 44);
2、删除
$arr=array(11, 22, 33, 44);
unset($arr[0]); //数组变为$arr=array(22, 33, 44);
3、使用
$arr=array(11, 22, 33, 44);
echo $arr[0];
$arr=array('a'=>11, 'b'=>22, 'c'=>33, 'd'=>44);
echo $arr['b']];
4、遍历
$arr=array('a'=>11, 'b'=>22, 'c'=>33, 'd'=>44);
foreach($arr as $value){ //无键名
echo $value."<br>";
}
foreach($arr as $id=>$value){ //输出键和值
echo $id."__".$value."<br>";
}
四、二维数组
$arr=array(array("1","11","111"), array("2","22","222"));
echo $arr[1][2];
五、数组函数
(1)array_change_key_case(array, case)
array:必需,数组。
case:可选,CASE_LOWER(默认值,小写字母返回数组的键),CASE_UPPER(大写字母返回数组的键)
作用:将数组的所有的 KEY 都转换为大写或小写。
代码如下 | 复制代码 |
<?php $a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse"); print_r(array_change_key_case($a,CASE_UPPER)); ?> |
结果:Array ( [A] => Cat [B] => Dog [C] => Horse )
(2)array_chunk(array,size,preserve_key)
array:必需。
size:必需,规定每个新数组包括多少元素。
preserve_key:可选,true(保留键名),false(新索引)
作用:把一个数组分成新的数组块。
代码如下 | 复制代码 |
<?php //array_chunk(array,size,preserve_key) $a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow"); print_r(array_chunk($a1,2)); $a2=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow"); print_r(array_chunk($a2,2,true)); ?> |
结果:
Array ( [0] => Array ( [0] => Cat [1] => Dog ) [1] => Array ( [0] => Horse [1] => Cow ) )
Array ( [0] => Array ( [a] => Cat [b] => Dog ) [1] => Array ( [c] => Horse [d] => Cow ) )
.......
像这样的函数很多,可以在用的时候再查,列表如下(php代表第一次出现版本)
函数 描述 PHP
array() 创建数组。 3
array_change_key_case() 返回其键均为大写或小写的数组。 4
array_chunk() 把一个数组分割为新的数组块。 4
array_combine() 通过合并两个数组来创建一个新数组。 5
array_count_values() 用于统计数组中所有值出现的次数。 4
array_diff() 返回两个数组的差集数组。 4
array_diff_assoc() 比较键名和键值,并返回两个数组的差集数组。 4
array_diff_key() 比较键名,并返回两个数组的差集数组。 5
array_diff_uassoc() 通过用户提供的回调函数做索引检查来计算数组的差集。 5
array_diff_ukey() 用回调函数对键名比较计算数组的差集。 5
array_fill() 用给定的值填充数组。 4
array_filter() 用回调函数过滤数组中的元素。 4
array_flip() 交换数组中的键和值。 4
array_intersect() 计算数组的交集。 4
array_intersect_assoc() 比较键名和键值,并返回两个数组的交集数组。 4
array_intersect_key() 使用键名比较计算数组的交集。 5
array_intersect_uassoc() 带索引检查计算数组的交集,用回调函数比较索引。 5
array_intersect_ukey() 用回调函数比较键名来计算数组的交集。 5
array_key_exists() 检查给定的键名或索引是否存在于数组中。 4
array_keys() 返回数组中所有的键名。 4
array_map() 将回调函数作用到给定数组的单元上。 4
array_merge() 把一个或多个数组合并为一个数组。 4
array_merge_recursive() 递归地合并一个或多个数组。 4
array_multisort() 对多个数组或多维数组进行排序。 4
array_pad() 用值将数组填补到指定长度。 4
array_pop() 将数组最后一个单元弹出(出栈)。 4
array_product() 计算数组中所有值的乘积。 5
array_push() 将一个或多个单元(元素)压入数组的末尾(入栈)。 4
array_rand() 从数组中随机选出一个或多个元素,并返回。 4
array_reduce() 用回调函数迭代地将数组简化为单一的值。 4
array_reverse() 将原数组中的元素顺序翻转,创建新的数组并返回。 4
array_search() 在数组中搜索给定的值,如果成功则返回相应的键名。 4
array_shift() 删除数组中的第一个元素,并返回被删除元素的值。 4
array_slice() 在数组中根据条件取出一段值,并返回。 4
array_splice() 把数组中的一部分去掉并用其它值取代。 4
array_sum() 计算数组中所有值的和。 4
array_udiff() 用回调函数比较数据来计算数组的差集。 5
array_udiff_assoc() 带索引检查计算数组的差集,用回调函数比较数据。 5
array_udiff_uassoc() 带索引检查计算数组的差集,用回调函数比较数据和索引。 5
array_uintersect() 计算数组的交集,用回调函数比较数据。 5
array_uintersect_assoc() 带索引检查计算数组的交集,用回调函数比较数据。 5
array_uintersect_uassoc() 带索引检查计算数组的交集,用回调函数比较数据和索引。 5
array_unique() 删除数组中重复的值。 4
array_unshift() 在数组开头插入一个或多个元素。 4
array_values() 返回数组中所有的值。 4
array_walk() 对数组中的每个成员应用用户函数。 3
array_walk_recursive() 对数组中的每个成员递归地应用用户函数。 5
arsort() 对数组进行逆向排序并保持索引关系。 3
asort() 对数组进行排序并保持索引关系。 3
compact() 建立一个数组,包括变量名和它们的值。 4
count() 计算数组中的元素数目或对象中的属性个数。 3
current() 返回数组中的当前元素。 3
each() 返回数组中当前的键/值对并将数组指针向前移动一步。 3
end() 将数组的内部指针指向最后一个元素。 3
extract() 从数组中将变量导入到当前的符号表。 3
in_array() 检查数组中是否存在指定的值。 4
key() 从关联数组中取得键名。 3
krsort() 对数组按照键名逆向排序。 3
ksort() 对数组按照键名排序。 3
list() 把数组中的值赋给一些变量。 3
natcasesort() 用“自然排序”算法对数组进行不区分大小写字母的排序。 4
natsort() 用“自然排序”算法对数组排序。 4
next() 将数组中的内部指针向前移动一位。 3
pos() current() 的别名。 3
prev() 将数组的内部指针倒回一位。 3
range() 建立一个包含指定范围的元素的数组。 3
reset() 将数组的内部指针指向第一个元素。 3
rsort() 对数组逆向排序。 3
shuffle() 把数组中的元素按随机顺序重新排列。 3
sizeof() count() 的别名。 3
sort() 对数组排序。 3
uasort() 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。 3
uksort() 使用用户自定义的比较函数对数组中的键名进行排序。 3
usort() 使用用户自定义的比较函数对数组中的值进行排序。 3
一、文件的上传
1、客户端设置:
(1)、在
标签中将enctype和method两个属性指明相应的值。
Enctype="multipart/form-data"; Method="POST"
(2)、form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值
2、服务器端设置:
(1)、$_FILES多维数组:用于存储各种上传文件有关的信息
(2)、文件上传与php配置文件的设置,如以下php.ini文件中的一些指令
指令 默认值 功能描述
file_uploads ON 确定服务器上的PHP脚本是否可以接受HTTP文件上传
memory_limit 8M 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
upload_max_file 2M 限制PHP处理上传文件大小的最大值,此值必须小于POST_MAX_SIZE值
post_max_size 8M 限制通过POST方法可以接受信息的最大值
upload_tmp_dir NULL 上传文件的临时路径,可以是一个绝对路径
三、文件函数库
touch
设置文件的访问和修饰时间
bool touch(string $filename[, int $time[, int $time]])
copy
复制文件
bool copy(string $source, string $dest)
注意:移动文件请使用rename函数
file_put_contents
将一个字符串写入文件
int file_put_contents(string $filename, string $data[, int $flag[, resource $content]])
file_get_contents
将整个文件读到字符串
string file_get_contents(string $filename[, bool user_include_path [, resource $content[, int $offset[, int $maxlen]]]])
四、序列化与反序列化
serialize
序列化
string serialize(mixed $value)
注意:serialize()可处理除了resouce之外的任何类型。甚至可以serialize()那些包含了指向其自身引用的数组。
unserialize
反序列化
mixed unserialize(string $str)
● microtime
返回当前Unix时间戳和微秒数
mixed microtime([bool get_as_float]);
● date_default_timezone_set
设置默认时区
bool date_default_timezone_set(string timezone_identifier);
● date_default_timezone_get
获取默认时区
string date_default_timezone_get(void);
三、字符函数库
strlen
获取字符串长度
int strlen(string $str);
strtolower
字符串转换为小写
string strtolower(string $str);
strtoupper
字符串转换为大写
string strtoupper(string $str);
ucfirst
首字母大写
string ucfirst(string $str);
ucwords
将每个单词的首字母转换为大写字母
string ucwords(string $str);
ltrim
从字符串开始的位置删除空格或其他字符
string ltrim(string $str [, string $charlist]);
rtrim
从字符串结束的位置删除空格或者其他字符
string rtrim(string $str[, string $chirlist]);
trim
从字符串开始和结束的位置删除空格或者其他字符
str_replace
字符替换
mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);
str_ireplace
字符替换
mixed str_ireplace(mixed $search, mixed $replace, mixed $subject, [int $count]);
md5
计算字符串的MD5哈希
string md5(string $str[, bool $raw_output=false]);
strpos
返回一个字符在另一个字符第一次出现的位置
int strpos(string haystack, mixed needle[, int offset]);
上一教程我们讲了移动互联网开发的php变量及常量,这一教程我们来讲讲php的运算符,PHP中有丰富的运算符集,它们中大部分直接来自于C语言。一、PHP的运算符
PHP中有丰富的运算符集,它们中大部分直接来自于C语言。按照不同功能区分,运算符可以分为:算术运算符、字符串运算符、赋值运算符、位运算符、条件运算符,以及逻辑运算符等。当各种运算符在同一个表达式中时,它们的运算是有一定的优先级的。
(1)算术运算
代码如下 | 复制代码 |
+ - * / % ++ -- |
(2)字符串运算符
字符串运算符只有一个.(点)就是英文的句号。它可以将字符串连接起来,组成新字符串,也可以将字符串与数字连接,这时类型会自动转换。
代码如下 | 复制代码 |
$a="dawanganban"; $b="123"; echo $a.$b; //输出结果:dawanganban123 |
(3)赋值运算符
代码如下 | 复制代码 |
= += -= *= /= %= .= $a="dawanganban"; $a.=1; $a.=2; $a.=3; echo $a.$b; //输出结果:dawanganban123 |
(4)位运算符
& | ~ ^ << >>
(5)比较运算符
> < >= <= == != <> === !==
<>:为不等于和!=相同
===:恒等,值相等且类型一致
!==:非恒等,值不相等或类型不一致
代码如下 | 复制代码 |
echo 5 == "5"; //true PHP是弱类型语言(js中的变量类似) echo 5 === "5"; //false 完全等于 |
(6)逻辑运算
AND(逻辑与) OR(逻辑或) XOR(逻辑异或) &&(逻辑与) ||(逻辑或) !(逻辑非)
代码如下 | 复制代码 |
var_dump(5 && ""); //false var_dump(5 && "2"); //true var_dump(5 || ""); //true var_dump(0 xor 1); //true var_dump(0 xor 0); //false var_dump(1 xor 1); //false |
一、PHP5.4的基本语法格式
1、PHP的分割符
代码如下 | 复制代码 |
print? $php=true; //分号结束语句 if($php){ echo "真"; //分号结束语句 } //大括号结束语句 ?> |
2、PHP注释与语法标识
(1)、单行注释 // 来源于C++的注释 # 来源于C语言的注释
(2)、多行注释 /* */ 来源于C语言的注释
3、函数的使用格式
(1) 返回值 函数名()
(2) 返回值 函数名(参数, 参数)
(3) 函数名(参数, 参数, 返回变量)
(4) 返回值 函数名(.. ..)通用符 // PHP5.4的用法
二、PHP5.4的变量与变量的数据类型
变量是由一个美元符“$"开头,”$"后是一个标识符。标识字符串只字母、数字、下划线组成且不可以数字开头。
代码如下 | 复制代码 |
$php=true; //分号结束语句 if($php){ echo "真"; //分号结束语句 } //大括号结束语句 $url="blog.csdn.net/dawanganban"; //定义变量 echo $url; unset($url); //删除一个变量url echo $url; ?> |
变量命名的方式
(1)单词之间直接连接
$titlekeyword
(2)单词之间用下划线连接
$title_keyword
(3)单词之间首字母大写(驼峰)
$titleKeyword
PHP的数据类型如下:
(1)字符串(String):单引号(简单引号)或双引号(功能引号)内的内容
(2)整型(integer): -2^32 < n < 2^32-1
(3)浮点符(float或double) 1.8E+308 (1.8 x 10^308)
(4)布尔型(boolean) true或false
(5)数组(Array)
(6)对象(Object)
代码如下 | 复制代码 |
class Person{ public $userName="阳光小强"; public function getMsg(){ echo "姓名为:".$this->userName; } } $p=new Person(); $p->getMsg(); ?> |
(7)资源类型(Resouce) 系统数据资源
资源是一个特殊的数据类型,无法直接获得变量,需要通过专门的函数来访问:
数据库访问必须通过Mysql函数库、Mysqli函数库或PDO函数库实现。
文件访问必须通过FileSystem函数库实现。
目录操作必须通过Directory函数库实现。
图像操作必须通过GD函数库实现。
(8)空值(NULL)
三、PHP5.4的系统常量与自定义常量
常量在程序执行期间无法改变数据,常量的作用域是全局的。常量的命名与变量相似,只是不带“$"符号。一个有效的常量由字母或者下划线开头,一般在PHP中常量都为大写字母而且又分为系统常量和自定义常量。
系统常量范例:
__FILE__ 默认常量,是指PHP程序文件名及路径
__LINE__ 默认常量,是指PHP程序的行数
__CLASS__ 类的名称
在PHP中通过define()函数来定义一个常量,其语法格式为:
bool define(string $name, mixed $value [, bool case_$insensitive])
name:常量的名称
value:常量的值
insensitive:指定常量名称是否区分大小写。如果设置为true则不区分大小写;如果设置为false则区分大小写,默认值为false。
print?
define("COLOR", "red"); //定义一个常量COLOR,值为red
echo COLOR."
"; //输出常量COLOR的值
可变变量
$a="b"
$$a="123" //可变变量
echo $b;
输出结果为:123
在字符串中输出变量要使用双引号
$a=50;
//echo '我有$a元人民币"; 单引号
echo "我有$a元人民币";
在双引号中可以执行的转意字符更多,比如 n t r
判断数据类型
$a="-5";
//$a=-5;
var_dump($a);
一、PHP5.4环境搭配基本流程
Apache:Web服务提供者。官网:www.apache.org
PHP: 官网:www.php.net
Mysql: 官网:www.mysql.com
二、软件下载
Apache下载地址:http://download.csdn.net/detail/lxq_xsyu/7057423
PHP下载地址:http://download.csdn.net/detail/lxq_xsyu/7057401
Mysql下载地址:http://download.csdn.net/detail/lxq_xsyu/6468461
三、环境搭建
(1)Apache安装
安装成功
(2)解压PHP5.4
(3)配置Apache的httpd.conf文件
Apache安装目录
ServerRoot "D:/Apache Software Foundation"
监听端口
#Listen 12.34.56.78:80
Listen 80
载入PHP组件
LoadModule php5_module "D:/php54/php5apache2_2.dll"
服务器名称
#ServerName www.meritit.com:80
文件根目录
DocumentRoot "D:/Apache Software Foundation/htdocs"
权限文件夹
索引(默认访问主页)
DirectoryIndex index.html
错误日志
ErrorLog "logs/error.log"
访问日志
CustomLog "logs/access.log" common
配置解析php
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
错误类型
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.meritit.com/subscription_
四、测试是否搭建成功
新建a.php
<?php
phpinfo();
?>
可以看到找不到php的配置文件,我们在apache配置文件中指定一下php的配置文件目录
PHPIniDir "D:/php54"
五、配置多站点访问
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
去掉上面注释(打开虚拟主机配置文件)
在httpd-vhosts.conf中配置了两个站点如下
DocumentRoot "D:/Apache Software Foundation/a_com"
ServerName 127.0.0.2
ServerAlias www.dummy-host.meritit.com
ErrorLog "logs/dummy-host.meritit.com-error.log"
CustomLog "logs/dummy-host.meritit.com-access.log" common
DocumentRoot "D:/Apache Software Foundation/b_com"
ServerName 127.0.0.3
ErrorLog "logs/dummy-host2.meritit.com-error.log"
CustomLog "logs/dummy-host2.meritit.com-access.log" common
注意:一旦配置了虚拟主机,前面配置的DocumentRoot就无效了。
D:Apache Software Foundationa_coma.php
<?php
echo "aaaaaa";
?>
D:Apache Software Foundationb_comb.php
<?php
echo "bbbbbb";
?>
注意:要修改权限文件夹目录
访问结果:
相关文章
- 支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
- 这篇文章主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
- 为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
- 下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
- 自定义一个jquery模态窗口插件,将它集成到现有平台框架中时,它只能在mainFrame窗口中显示,无法在顶层窗口显示. 解决这个问题的办法: 通过以下代码就可能实现在顶层窗口弹窗 复制代码 代码如下: $(window.top.documen...2014-05-31
- 这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-20
- 今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-06
- PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证...2015-11-24- 这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
- 这篇文章主要介绍了jquery自定义插件开发之window的实现过程的相关资料,需要的朋友可以参考下...2016-05-09
- 这篇文章主要介绍了C#自定义事件监听实现方法,涉及C#事件监听的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了使用BindingResult 自定义错误信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-23
- 这篇文章主要介绍了在Vue中获取自定义属性方法:data-id的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-09
- 这篇文章主要介绍了微信小程序 Toast自定义实例详解的相关资料,需要的朋友可以参考下...2017-01-23
- 今天小编就为大家分享一篇pytorch 自定义参数不更新方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-29
- 下面小编就为大家带来一篇thinkphp自定义权限管理之名称判断方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-04-03
- Nginx日志主要分为两种:访问日志和错误日志。访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。下面这篇文章主要给大家介绍了Nginx自定义访问日志的配置方式,需要的朋友可以参考学习,下面来一起看看吧。...2017-07-06