PHP三元/三目运算符的使用例子
三元运算符的功能与“if....else”流程语句一致,它在一行中书写,代码精练、执行效率高。在PHP程序中恰当地使用三元运算符能够让脚本更为简洁、高效。代码的语法如下:
(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
代码如下 | 复制代码 |
<?PHP |
表达式里可以是函数、数组等等。
事实上,三元运算符可以扩展使用,当设置的条件成立或不成立,执行语句都可以不止一句,试看以下格式:
代码如下 | 复制代码 |
(expr1) ? (expr2).(expr3) : (expr4).(expr5); |
我们非常明显地看到,多个执行语句可以使用用字符串运算符号(“.”)连接起来,各执行语句用小角括号包围起来以表明它是一个独立而完整的执行语句。这样扩展后它的功能更为逼近“if...else”流程语句。
同时三元运算符还可以嵌套使用。例如,a大于b成立时:如果a小于c,那么x=c-a否则x=a-c;否则a小于b成立时:如果b小于c,那么x=c-b否则x=b-c:
代码如下 | 复制代码 |
$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c); |
嵌套使用的三元运算符可读性不太好,日后对代码的维护极可能存在问题,所以像这种情况我们还是直接使用if else if 来实现吧。
一个合格的程序员在实现数据入库中时我们都会有一些非常严密的过滤与数据规则了,像我们文件上传时在前段要判断用户是否选择上传文件同时在后台也可判断是否有上传的文件了,下面我们就一起来看看相关例子吧。如下html代码如
代码如下 | 复制代码 |
<formaction="?"method="post"enctype='multipart/form-data'> |
我们最常用的在前端简单的进行判断
代码如下 | 复制代码 |
<script> |
如果要做真正的安全我们需要在后台进入判断处理
代码如下 | 复制代码 |
<?php |
安例分析
js判断是比较笼统了我们只是使用了file=document.getElementById("file").value;来判断file有没有值或不为空了,这样只要输入一个数字就可以直接提交了,所以我们需要进入如上传文件的用户名限制
如
代码如下 | 复制代码 |
functionCheckWorkFile() |
对于php处理我们也只使用了if(!empty($_FILES['file']['tmp_name'])){来判断不为空了,其实这样也是不合理的
如我们可以如此处理
代码如下 | 复制代码 |
function file_type($filename) //Fix return $fileType; echo file_type('start.php'); // 6063 or 6033 |
这样我们可以限制上传文件类型的同时也给程序做了一个安全处理了哦
通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中foreach前后使用例子,希望对大家会有所帮助。简单的一个php数组函数,之前没这个需要一直都不知道有这么一个函数,擦汗...
php数组逆序输出代码
代码如下 | 复制代码 |
foreach(array_reverse($array) AS $key=>$value){ echo $value.' '; } |
array_reverse
(PHP 4, PHP 5)
array_reverse — 返回一个单元顺序相反的数组
说明
array array_reverse ( array $array [, bool $preserve_keys ] )
array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keys 为 TRUE 则保留原来的键名。
Example #1 array_reverse() 例子
代码如下 | 复制代码 |
<?php |
这将使 $result 和 $result_keyed 具有相同的单元,但是注意键名的区别。$result 和 $result_keyed 的打印输出显示分别为:
Array
(
[0] => Array
(
[0] => green
[1] => red
)
[1] => 4
[2] => php
)
Array
(
[2] => Array
(
[0] => green
[1] => red
)
[1] => 4
[0] => php
)
例子,在PHP模板引擎中
模板文件:
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <br/> {foreach ( from=url key=b item=c )} <br/> </body> |
解析引擎:
代码如下 | 复制代码 |
// var $pattern_var = "/{$left_tag}\\$([\w\d]+){$right_tag}/"; $replace_var = '<?php echo \$this->var_tpl_arr["$1"];?>'; if (preg_match($pattern_var, $content)) { $content = preg_replace($pattern_var, $replace_var, $content); } // foreach preg_match_all("/{$left_tag}foreach\s+([^{]+?){$right_tag}/is", $content, $match_foreach); if (isset($match_foreach[1]) && is_array($match_foreach)) { foreach($match_foreach[1] as $match_key => $match_value) { $split_foreachs = array_filter(preg_split('/\s+/is', $match_value)); $new_foreach_tag = array(); foreach($split_foreachs as $split_foreach) { $split = explode("=", $split_foreach); if (count($split == 2)) { if(in_array($split[0], array("from","item","key"))) { //过滤标签 不存在过滤 $new_foreach_tag[$split[0]] = $split[1]; } } } $from = $key = $item = ''; extract($new_foreach_tag); $key = ($key) ? '$'.$key.' =>' : '' ; $replace_foreach = '<?php foreach($this->var_tpl_arr["'.$from.'"] as '.$key.' $'.$item.') { ?>'; $content = str_replace($match_foreach[0][$match_key], $replace_foreach, $content); } } $pattern_foreach = "/{$left_tag}\/foreach{$right_tag}/"; $replace_foreach = "<?php } ?>"; if (preg_match($pattern_foreach, $content)) { $content = preg_replace($pattern_foreach, $replace_foreach, $content); } // var in statement $pattern_var = "/{$left_tag}==([\w\d]+){$right_tag}/"; $replace_var = '<?php echo \$$1;?>'; if (preg_match($pattern_var, $content)) { $content = preg_replace($pattern_var, $replace_var, $content); } |
解析后:
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <br/> <?php foreach($this->var_tpl_arr["url"] as $b => $c) { ?> <br/> </body> |
使用:
代码如下 | 复制代码 |
<?php require_once 'core/YATP.class.php'; $app = new YATP(); $article_title = "yet,it is a simple template engine"; $url = array( $app->assign("article_title",$article_title);
|
php文件是什么文件?
php文件怎么打开呢?php全简Hypertext Preprocessor 中文名字为超文本预处理器了,它和c,c++,java,perl一样可以进行一些算法操作,同时php主要是用在web应用开发中,php入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php了。
php文件怎么打开?
php文件打开方法很简单我们可以直接使用记事本文本就可以打了,如果是WEB开发应用我们可以使用dw Notepad ++ Eclipse PDT Notepad2等等都可以打开了,这种打开只能查看源文件了无法执行。
php文件怎么运行
前面介绍了php是一款Web开发领域一门编程语言了,我们需要php环境的支持才可以运行哦。
php环境有那些
php可以在windows或linux中运行,在windows中支持环境有iis+php或apache+php环境
linux中我也可以使用apache+php或nginx+php环境
php环境怎么配置
iis+php环境配置方法
1> 解压到 c:/php 目录.
打开 c:/php 目录,找到 php.ini-dist文件.重命名为 php.ini .
2> 打开php.ini 文件.
找到 ;include_path = ".;c:/php/includes" 该行.
修改为 include_path = "c:/php/includes"
找到 extension_dir = "./"
修改为 extension_dir = "c:/php/ext"
找到 ;extension=php_mysql.dll
修改为 extension=php_mysql.dll
找到 ;session.save_path = "/tmp"
修改为 session.save_path = "c:/winnt/temp"
如果操作系统是win2003 则为 "c:/windows/temp"
本目录内提供php.ini可以直接使用.适用windows2000.
3> 拷贝 php.ini到 c:/winnt
拷贝 libmysql.dll 到 c:/winnt/system32
4> 新建目录d:/forphp做为测试php网站目录.
在该目录下新建记事本文件,重命名为index.php内容为 <? phpinfo(); ?> 本目录内有index.php供使用.
5> 确保Iusr_mochinename用户对d:/forphp有完全控制权限.
对c:/php有读取运行权限.(如果d盘为fat32文件系统格式,就不用设置d:/forphp权限了)
6> 打开iis管理器.
新建web站点.指向到d:/forphp目录.站点主机头任意指定.(为方便浏览,使用本机ip)
7> 右键站点--属性--"主目录"选项.
点下面"配置".弹出"应用程序配置",点"添加".可执行文件,浏览选中 c:/php/php5isapi.dll 确定. 扩展名 写 .php
8> 重起IIS. 即可实现iis站点支持php脚本.
PHP与IIS共存的设置
第一步,解开PHP5.0压缩包,可以把它放在C:/PHP5下面。
第二步,把C:/PHP5下面的php.ini-dist文件复制到WINNT目录下,并改名成php.ini。你不需要修改任何参数就可以运行,当然根据不同情况你可以自行修改某些参数。
第三步,把C:/PHP5/php5ts.dll复制到C:/WINNT/system32目录下。
第四步,启动计算机管理。
第五步,在计算机管理窗口上展开“服务和应用程序”/“Internet信息服务”,在“默认Web站点”上点鼠标右键,选属性,这时系统弹出“默认Web站点属性”窗口:
第七步,在“默认Web站点属性”窗口上点取“ISAPI筛选器”标签,点击“添加”按钮,在弹出的“筛选器属性”窗口的“筛选器名称”中输入“PHP”,“可执行文件”中输“C:/PHP5/sapi/php5isapi.dll”,确定。
第八步,在“默认Web站点属性”窗口上点取“主目录”标签,点“配置”按钮,在弹出的“应用程序配置”窗口中点取“添加”按钮,在弹出的“添加/编辑应用程序扩展名映像”对话框中的“可执行文件”文本框中输入“C:/PHP5/sapi/php5isapi.dll”,“扩展名”文本框中输入“.php”(注意一定要有那个点),确定。
第九步,打开命令行窗口,输入“net stop iisadmin”命令,终止IIS服务。系统会问你是否要将相关的服务也停止,答是。等到全部关闭。
第十步,输入“net start w3svc”命令,重新启动IIS服务。
apache配置php环境
1.我们在电脑中安装apache环境,
2.然后我们下载php版本之后解压在C:盘php目录下
然后我们在apache紧后面加上
LoadModule php5_module "c:/php5/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "c:/php5"
再重启 apache这样就配置好了
然后我们再创建一个网站把php 文件放到网站目录下就可以运行了,代码如下
<?
define("test","HELLO WORLD!");
echo test
?>
输出为
HELLO WORLD
友情提示,本文章只是大概的介绍了php是什么文件的同时附加了php文件打开与让php运行的一些思路了,具体如果要真正的运行php我们还需要更细的去配置apache环境才可以哦,因为真正应用还有mysql数据库的安装配置哦。
php编程代码规范我们会从几个方法来介绍,如:命名规范 常用名词 代码重构了,下面我先整理一些规范之后再整理一些笔记,希望文章对各位朋友会带来一些帮助哦。命名规范
Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php;
Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php;
Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip;
Θ 方法的命名使用驼峰法,首字母小写或者使用下划线”_”,例如listComment(),_getResource(),通常下划线开头的方法属于私有方法;
Θ 属性的命名使用驼峰法,首字母小写或者使用下划线”_”,如$username,$_instance,通常下划线开头的属性属于私有属性;
Θ 常量以大写字母和下划线”_”命名,如”HOME_URL”;
常用名词
1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名);
2>get名词(单数);
3>名词Total,表示某个东西的总数。如expenseTotal;
4>found:表示某个值是否已经找到;
5>uccess或ok:一项操作是否成功;
6>done:某个工程是否完成;
7>error:是否有错误发生;
8>result:返回的结果
代码重构
1.函数或者方法体内的代码尽量控制在一个屏幕内。
2.类中不使用的方法随机删除。
3.修改别人的类中方法,要签名。
4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。
5.尽量让每个类做自己的事,每个函数做一件事。
下面补充一些方法
一、文件格式
1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。
例如:
代码如下 | 复制代码 |
<?php $foo = 'foo'; 2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。 例如: if (1 == $x) { $indented_code = 1; if (1 == $new_line) { $more_indented_code = 1; } } |
3. 变量赋值必须保持相等间距和排列。
例如:
代码如下 | 复制代码 |
$variable = 'demo'; $var = 'demo2'; |
4. 每行代码长度应控制在80个字符以内,最长不超过120个字符。因为 linux 读入文件一般以80列为单位,就是说如果一行代码超过80个字符,那么系统将为此付出额外操作指令。这个虽然看起来是小问题,但是对于追求完美的程序员来说也是值得注意并遵守的规范。
5. 每行结尾不允许有多余的空格。
二、命名约定
1. 类文件都是以“.class.php“为后缀,且类文件名只允许字母,使用驼峰法命名,并且首字母大写,例如:DbMysql.class.php 。
2. 配置和函数等其他类库文件之外的文件一般是分别以“.inc.php“和”.php“为后缀,且文件名命名使用小写字母和下划线的方式,多个单词之间以下 划线分隔,例如config.inc.php , common.php,install_function.php 。
3. 确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的。
4. 类名和文件名一致(包括上面说的大小写一致),且类名只允许字母,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php 。
5. 控制器类以Action为后缀,例如 UserAction、InfoAction ,模型类以Model为后缀,例如UserModel、InfoModel ,其他类也分别以相应分类为后缀,例如Service 、Widget。
6. 方法名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,且越详细越好,应该能够描述清楚该方法的功能,例如switchModel、findPage。
7. 属性的命名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,例如tablePrefix、tableName 。
8. 对于对象成员的访问,我们必须始终使用 “get” 和 “set” 方法。例如:
代码如下 | 复制代码 |
class Foo { |
相关文章
- 有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。  ...2017-07-06
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- 许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
使用insertAfter()方法在现有元素后添加一个新元素
复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31jQuery 1.9使用$.support替代$.browser的使用方法
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31- C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
使用percona-toolkit操作MySQL的实用命令小结
1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
如何使用php脚本给html中引用的js和css路径打上版本号
在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
- index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
安装和使用percona-toolkit来辅助操作MySQL的基本教程
一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24- 基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
- 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
- 无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
- 前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04