搜索
首页后端开发php教程PHP高级技巧全放送(下)_PHP

如果需要在数组的开头添加元素其代码与上面的代码差不多唯一的不同之处是需要用array_unshift()代替array_push()

/* 建立一个数组*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
/* 向数组中添加元素*/
array_unshift($fruitArray, "grape", "pineapple", "tomato");
/* 显示每个元素及其序号*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
;
}
?>
运行上面的程序将得到下面的结果
0 : grape
1 : pineapple
2 : tomato
3 : apple
4 : orange
5 : banana
6 : kiwi
7 : pear
array_merge()函数可以把二个或更多的数组合并为一个数组。
/*建立第一个数组*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
/*/建立第二个数组*/
$vegArray = array("carrot", "green beans", "asparagus", "artichoke", "corn");
/*把这二个数组合并为一个数组*/
$goodfoodArray = array_merge($fruitArray, $vegArray);
/* 显示每个元素及其序号*/
while (list($key,$value) = each($goodfoodArray)) {
echo "$key : $value
"
;
}
?>
运行上面的脚本将得到下面的结果
0 : apple
1 : orange
2 : banana
3 : kiwi
4 : pear
5 : carrot
6 : green beans
7 : asparagus
8 : artichoke
9 : corn
现在我们已经掌握了如何添加元素和合并数组我们再来看看如何从一个数组中删除元素。从一个数组的末尾删除一个元素可以使用array_pop()函数使用array_shift()函数可以从一个数组的开头删除一个元素。尽管使用array_pop()或 array_shift()从数组中删除了一个元素你还可以把这个元素当作一个变量来使用。
使用array_pop()从一个数组的末尾删除一个元素

/*建立一个数组*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
/* 从数组的末尾删除一个元素*/
$popped = array_pop($fruitArray);
/* 显示删除后数组的内容和你删除的元素*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
;
}
echo "
and finally, in $popped: $popped"
;
?>
运行上面的脚本会得到下面的结果
0 : apple
1 : orange
2 : banana
3 : kiwi
and finally, in $popped: pear
我们再来讨论一个从一个数组的末尾删除元素的例子

/* 建立一个数组*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
/*从一个数组的开始删除一个元素*/
$shifted = array_shift($fruitArray);
/* 显示删除后数组的内容和你删除的元素*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
;
}
echo "
and finally, in $shifted: $shifted"
;
?>
运行上述脚本会得到如下的显示结果
0 : orange
1 : banana
2 : kiwi
3 : pear
and finally, in $shifted: apple
另外还有几个函数可以对数组中的元素进行排序但在这里我们将只简要介绍基本的排序函数说明排序的过程
/*建立一个数组*/
$fruitArray = array("apple", "orange", "banana", "kiwi", "pear");
/* 对数组进行排序*/
sort($fruitArray);
/*显示每个元素及其序号*/
while (list($key,$value) = each($fruitArray)) {
echo "$key : $value
"
;
}
?>
运行上述的脚本会得到如下的显示结果
0 : apple
1 : banana
2 : kiwi
3 : orange
4 : pear
六、动态图像的创建
只要安装一些第三方的库文件并具有一定的几何知识就可以利用PHP来创建和处理图像了。事实上这不需要太多的几何知识因为我大学没有毕业仍然可以利用PHP创建图像。
在使用基本的图像创建函数之前需要安装GD库文件。如果要使用与JPEG有关的图像创建函数还需要安装jpeg-6b如果要在图像中使用Type 1型字体则必须安装t1lib。
在建立图像创建环境之前还需要作一些准备工作。首先安装t1lib其次安装jpeg-6b然后再安装GD库文件。在安装时一定要按这里给定的顺序进行安装因为在编译GD为库时会用到jpeg-6b如果没有安装jpeg-6b在编译时就会出错。
在安装完这三个组件后还需要重新配置PHP这也是你对采用DSO方式安装PHP感到庆幸的地方之一。运行make clean然后在当前的配置中添加下面的内容
--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
完成添加后执行make命令然后再执行make install命令。重新启动Apache后运行phpinfo()来检查一下新的设置是否生效了。现在就可以开始图像创建工作了。
根据所安装的GD库文件的版本不同你也许能或者不能创建GIF或PNG格式的图形文件如果安装的是gd-1.6或以前的版本可以使用GIF格式的文件但不能创建PNG格式如果安装的是gd-1.6以后的版本可以创建PNG文件但不能创建GIF格式的文件。
创建一幅简单的图像也需要用到许多的函数我们将一步一步地进行说明。
在这个例子中我们将创建一个PNG格式的图像文件下面的代码是一个包含所创建的图像的MIME类型的头部
header ("Content-type: image/png");
使用ImageCreate()创建一个代表空白图像的变量这个函数要求以像素为单位的图像大小的参数其格式是ImageCreate(x_size, y_size)。如果要创建一个大小为250X250的图像就可以使用下面的语句
$newImg = ImageCreate(250,250);
由于图像还是空白的因此你可能会希望用一些彩色来填充它。然而你需要首先使用ImageColorAllocate()函数用其RGB值为这种颜色指定一个名字这一函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如果要定义天蓝色可以使用如下的语句
$skyblue = ImageColorAllocate($newImg,136,193,255);
接下来需要使用ImageFill()函数用这种颜色填充这个图像ImageFill()函数有几个版本例如ImageFillRectangle()、ImageFillPolygon()等。为简单起见我们通过如下的格式使用ImageFill()函数
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$skyblue);
最后建立图像后释放图像句柄和所占用的内存
ImagePNG($newImg);
ImageDestroy($newImg); ?>
这样创建图像的全部代码如下所示
header ("Content-type: image/png");
$newImg = ImageCreate(250,250);
$skyblue = ImageColorAllocate($newImg,136,193,255);
ImageFill($newImg,0,0,$skyblue);
ImagePNG($newImg);
ImageDestroy($newImg);
?>
如果把这个脚本文件保存为skyblue.php并用浏览器访问它就会看到一个天蓝色的250X250的PNG格式的图像。
我们还可以使用图像创建函数对图像进行处理例如把一个较大图像作成一个小图像
假设你有一幅图像想从中裁剪出一个35X35大小的图像。你所需要作的是创建一个35X35大小的空白图像创建一个包含原来图像的图像流然后把一个经过调整大小的原来的图像放到新的空白图像中。
要完成这一任务的关健函数是ImageCopyResized()它要求的格式如下所示ImageCopyResized([new image handle],[original image handle],[new image X], [new Image Y], [original image X], [original image Y], [new image X], [new image Y], [original image X], [original image Y])
/* 发送一个头部,以便让浏览器知道该文件所包含的内容类型*/
header("Content-type: image/png");
/* 建立保存新图像高度和宽度的变量*/
$newWidth = 35;
$newHeight = 35;
/* 建立给定高度和宽度的新的空白图像*/
$newImg = ImageCreate($newWidth,$newHeight);
/* 从原来较大的图像中得到数据*/
$origImg = ImageCreateFromPNG("test.png");
/*拷贝调整大小后的图像,使用ImageSX()、ImageSY()得到原来的图像在X、Y方面上的大小 */
ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
/*创建希望得到的图像,释放内存 */
ImagePNG($newImg);
ImageDestroy($newImg); ?>
如果把这一小段脚本保存为resized.php然后用浏览器对它进行访问就会看到一个35X35大小的PNG格式的图形。
七、基于PHP的用户认证
如果希望在每一段脚本上都进行口令保护可以结合使用header()语句、$PHP_AUTH_USER和$PHP_AUTH_PW来建立基本的认证方案通常的基于服务器的提问/响应顺序都如下所示
1、用户从服务器上请求一个文件。如果这个文件在服务器上是被保护的则在响应的头部向用户返回一个401示经授权的用户字符串。
2、浏览器收到这个响应后弹出要求用户输入用户名/口令的对话框。
3、用户在对话框中输入一个用户名和口令点击OK按钮将信息返回服务器供认证使用。
4、如果用户名和口令有效被保护的文件将向用户开放只要用户还在使用文件认证会一直有效。
一段简单的PHP脚本文件通过向用户发送一个适当的能够引起自动显示用户名/口令对话框的HTTP头部就可以模仿HTTP的提问/响应系统PHP把用户在用户名/口令对话框中输入的信息存储在$PHP_AUTH_USER和$PHP_AUTH_PW中使用这二个变量就可以与存储在文本文件、数据库等文件中的用户名/口令进行比较。
这个例子采用了二个硬编码的值进行认证但无论用户名和口令放在什么地方其原理都是相同的。

/* 检查$PHP_AUTH_USER和$PHP_AUTH_PW中的值*/
if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) {
/* 如果没有值,则发送一个能够引发对话框出现的头部*/
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW))){
/* 变量中有值,检查它们是否正确*/
if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) {
/* 如果输入的用户名和口令中有一个不正确,则发送一个能够引发对话框出现的头部 */
header('WWW-Authenticate: Basic realm="My Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else if (($PHP_AUTH_USER == "validname") || ($PHP_AUTH_PW == "goodpassword")) {
/* 如果二个值都正确,显示成功的信息 */
echo "

You're authorized!

";
}
}
?>
需要注意的是,如果你使用的是基于文件的保护机制,它并不能保证目录中所有的文件的安全。它可能保护大部分的文件,如果你认为它能够保护给定目录中的所有文件,你的这种认识就需要变变了。
八、PHP和COM
如果你喜欢冒险,并且在Windows上运行CGI、ISAPI或Apache模块版本的PHP,就可以访问COM的函数。好了,详细解释COM的工作就交给微软和许多大部头的书了,为了能简单地了解一下COM的功能,下面是一小段常见的脚本。
这一段PHP脚本在后端启动微软的字处理Word,打开一个新的文档,输入一些文字,保存文档,并关闭Word。

// 建立一个指向新COM组件的索引
$word = new COM("word.application") or die("Can'
t start Word!");
// 显示目前正在使用的Word的版本号
echo "Loading Word, v. {$word->Version}
";
// 把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真)
// to open the application in the forefront, use 1 (true)
$word->Visible = 0;
// 在Word中创建新的文档
$word->Documents->Add();
// 在新文档中添加文字
$word->Selection->TypeText("Testing 1-2-3...");
//把文档保存在Windows临时目录中
$word->Documents[1]->SaveAs("/Windows/temp/comtest.doc");
// 关闭与COM组件之间的连接
$word->Quit();
// 在屏幕上显示其他信息
echo "Check for the file...";
?>
如果你有一个intranet网站数据存储在SQL Server中用户需要这些数据的Excel格式则可以让PHP运行必要的SQL查询并对输出进行格式化然后利用COM打开Excel把数据转化为Excel格式的数据然后把数据保存在用户的台式机上。
九、PHP和Java
PHP另一个有趣的功

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
提高 Python 代码可读性的五个基本技巧提高 Python 代码可读性的五个基本技巧Apr 12, 2023 pm 08:58 PM

Python 中有许多方法可以帮助我们理解代码的内部工作原理,良好的编程习惯,可以使我们的工作事半功倍!例如,我们最终可能会得到看起来很像下图中的代码。虽然不是最糟糕的,但是,我们需要扩展一些事情,例如:load_las_file 函数中的 f 和 d 代表什么?为什么我们要在 clay 函数中检查结果?这些函数需要什么类型?Floats? DataFrames?在本文中,我们将着重讨论如何通过文档、提示输入和正确的变量名称来提高应用程序/脚本的可读性的五个基本技巧。1. Comments我们可

使用PHP开发直播功能的十个技巧使用PHP开发直播功能的十个技巧May 21, 2023 pm 11:40 PM

随着直播业务的火爆,越来越多的网站和应用开始加入直播这项功能。PHP作为一种流行的服务器端语言,也可以用来开发高效的直播功能。当然,要实现一个稳定、高效的直播功能需要考虑很多问题。下面列出了使用PHP开发直播功能的十个技巧,帮助你更好地实现直播。选择合适的流媒体服务器PHP开发直播功能,首先需要考虑的就是流媒体服务器的选择。有很多流媒体服务器可以选择,比如常

PHP中的多表关联查询技巧PHP中的多表关联查询技巧May 24, 2023 am 10:01 AM

PHP中的多表关联查询技巧关联查询是数据库查询的重要部分,特别是当你需要展示多个相关数据库表内的数据时。在PHP应用程序中,在使用MySQL等数据库时,多表关联查询经常会用到。多表关联的含义是,将一个表中的数据与另一个或多个表中的数据进行比较,在结果中将那些满足要求的行连接起来。在进行多表关联查询时,需要考虑表之间的关系,并使用合适的关联方法。下面介绍几种多

提高Python代码可读性的五个基本技巧提高Python代码可读性的五个基本技巧Apr 11, 2023 pm 09:07 PM

译者 | 赵青窕审校 | 孙淑娟你是否经常回头看看6个月前写的代码,想知道这段代码底是怎么回事?或者从别人手上接手项目,并且不知道从哪里开始?这样的情况对开发者来说是比较常见的。Python中有许多方法可以帮助我们理解代码的内部工作方式,因此当您从头来看代码或者写代码时,应该会更容易地从停止的地方继续下去。在此我给大家举个例子,我们可能会得到如下图所示的代码。这还不是最糟糕的,但有一些事情需要我们去确认,例如:在load_las_file函数中f和d代表什么?为什么我们要在clay函数中检查结果

Python中简单易用的并行加速技巧Python中简单易用的并行加速技巧Apr 12, 2023 pm 02:25 PM

1.简介我们在日常使用Python进行各种数据计算处理任务时,若想要获得明显的计算加速效果,最简单明了的方式就是想办法将默认运行在单个进程上的任务,扩展到使用多进程或多线程的方式执行。而对于我们这些从事数据分析工作的人员而言,以最简单的方式实现等价的加速运算的效果尤为重要,从而避免将时间过多花费在编写程序上。而今天的文章费老师我就来带大家学习如何利用joblib这个非常简单易用的库中的相关功能,来快速实现并行计算加速效果。2.使用joblib进行并行计算作为一个被广泛使用的第三方Python库(

四种Python推导式开发技巧,让你的代码更高效四种Python推导式开发技巧,让你的代码更高效Apr 22, 2023 am 09:40 AM

对于数据科学,Python通常被广泛地用于进行数据的处理和转换,它提供了强大的数据结构处理的函数,使数据处理更加灵活,这里说的“灵活性”是什么意思?这意味着在Python中总是有多种方法来实现相同的结果,我们总是有不同的方法并且需要从中选择易于使用、省时并能更好控制的方法。要掌握所有的这些方法是不可能的。所以这里列出了在处理任何类型的数据时应该知道的4个Python技巧。列表推导式ListComprehension是创建列表的一种优雅且最符合python语言的方法。与for循环和if语句相比,列

Python编程进阶,常用八大技巧!Python编程进阶,常用八大技巧!Apr 18, 2023 am 09:34 AM

整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可能有更好的方法来解决:user_input="Thisnstringhastsomewhitespaces...rn"character_map={ord('n'):'',ord('t'):'',ord('r'):None}user_input.translate(charact

Go语言中的网络爬虫开发技巧Go语言中的网络爬虫开发技巧Jun 02, 2023 am 09:21 AM

近年来,随着网络信息的急剧增长,网络爬虫技术在互联网行业中扮演着越来越重要的角色。其中,Go语言的出现为网络爬虫的开发带来了诸多优势,如高速度、高并发、低内存占用等。本文将介绍一些Go语言中的网络爬虫开发技巧,帮助开发者更快更好地进行网络爬虫项目开发。一、如何选择合适的HTTP客户端在Go语言中,有多种HTTP请求库可供选择,如net/http、GoRequ

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境