php 分支结构 条件结构 选择结构

 更新时间:2016年11月25日 15:51  点击:1648

php教程 分支结构 条件结构 选择结构

<?php
/*
 *    流程控制
 *   
 *     一、顺序结构
 *     二、分支结构--条件结构--选择结构
 *       1.单路分支
 *  //条件bool,true或false,> < == !- & || !
 *  if(条件)
 *   执行下面一条语句
 *  if(条件)
 *  {
 *   代码段;
 *   代码段;
 *  }
 *
 *       2.双路分支
 *          使用else从句
 *
 *      if(条件)
 *       执行一条语句
 *      else
 *       执行一条语句
 *      if(条件){
 *        一条或多条代码
 *      }else{
 *        一条或多条代码
 *      }
 *      
 *       3.多路分支
 *  可以使用 if  else if   和 switch case
 *  //这是一种互斥的关系
 *  if(条件){
 *
 *  }else if(条件){
 *  }else if(条件){
 *  }else{
 *  }
 *       4.嵌套分支
 *  if(){
 *   if(){
 *   }else{
 *    if(){}
 *   }
 *   }
 * 三、循环结构
 *  
 * 
 *
 *
 *
 * 总结:
 *  如果是判断一段范围 则使用elseif
 *  如果是单个匹配,则使用switch case
 */
 //单路执行
 $a=10;
 $b=5;
 if($a > $b)
  echo "$a 是大于 $b 的";

 //双路执行
 $a=10;
 $b=20;
 if($a>$b)
 {
  echo "$a 大于 $b</br>";
 }
 else
 {
  echo "$a 小于 $b</br>";
 }

 //多路执行
 $hour=date("H");
 if($hour > 6 && $hour < 9)
 {
  echo "good morning!":
 }
 else if($hour > 9 && $hour < 12)
 {
  echo "上午好";
 }
 else if($hour > 12 && $hour < 14)
 {
  echo "中午好";
 }
 else if($hour > 14 && $hour < 17)
 {
  echo "下午好";
 }
 else if($hour > 17 && $hour < 19)
 {
  echo "傍晚好";
 }
 else if($hour > 19 && $hour <22)
 {
  echo "晚上好";
 }
 else
 {
  echo "夜晚好";
 }
 //根据互斥性改良代码
 $hour=date("H");
 if($hour < 9)
 {
  echo "good morning!":
 }
 else if($hour < 12)
 {
  echo "上午好";
 }
 else if($hour < 14)
 {
  echo  case " Mon":
  echo "星期一";
  break;"中午好";
 }
 else if($hour < 17)
 {
  echo "下午好";
 }
 else if($hour > 19)
 {
  echo "傍晚好";
 }
 else if($hour < 22)
 {
  echo "晚上好";
 }
 else
 {
  echo "夜晚好";
 }

 //判断当天星期
 $week=date("D");//获取星期几
 switch($week) //switch(变量)  变量只用整型和字符串
 {
 case "Mon":
  echo "星期一";
  break;
 case "Tue"
  echo "星期二";
  break;
 case "Wed":
  echo "星期三";
  break;
 case "Thu":
  echo "星期四";
  break;
 case "Fri":
  echo "星期五";
  break;
 default:
  echo "周末";
 }

 //嵌套类
 $sex=$_GET["sex"];
 $age=$_GET["age"];
 if($sex=="nan")
 {
  if($age >= 60)
  {
   echo "这个$sex 已经退休".($age-60)."年了";
  }
  else
  {
   echo "这个男士还在工作,还有".(60-$age)."年才退休";
  }
 }
 else
 {
  if($age >= 66)
  {
   echo "这个$sex 已经退休".($age-66)."年了";
  }
  else
  {
   echo "这个女士还在工作,还有".(66-$age)."年才退休";
  }
 }
?>

读取团购网站的api的php教程程序

$arr = array(
 array("http://www.meituan.com/api/deals/hao123","url","美团网"),

);

class AminoAcid {
    var $name;
    var $symbol;
    var $code;
    var $type;
    function AminoAcid ($aa){
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}
function readDatabase($filename,$label){
    $data = implode("",file($filename));
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $tags);
    xml_parser_free($parser);
    foreach ($tags as $key=>$val) {
        if ($key == $label) {
            $molranges = $val;
            for ($i=0; $i < count($molranges); $i+=2) {
                $offset = $molranges[$i] + 1;
                $len = $molranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}
function parseMol($mvalues){
    for ($i=0; $i < count($mvalues); $i++) {
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    }
    return new AminoAcid($mol);
}

foreach($arr as $key => $value){
   $r = readDatabase($value[0],$value[1]);
   print_r($r);//打印出来解析出来的信息
 }

变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

在 PHP 中设置变量的正确方法是:

$var_name = value;PHP 的入门者往往会忘记在变量的前面的 $ 符号。如果那样做的话,变量将是无效的。

让我们试着创建一个存有字符串的变量,和一个存有数值的变量:


如果对于变量和常量的定义,你会注意几个方面呢?你可能会想到:

如何定义变量,它和C# 等语言有什么不同呢?
变量区分大小写吗?
PHP的变量还有其他重要的吗?

常量和变量的定义一样吗?
 分别讲述吧。
1.如何定义变量,它和C# 等语言有什么不同呢?
   PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。例如:
<?php教程
 $var='Jim';
  $VAR='Kimi;
  echo "$var,$VAR";//输出“Jim,Kimi"
 ?>你可能还关心变量的命名,其实和大多数语言一样。
2. 变量区分大小写吗?
   如 1里说的,区分大小写。
  注意,需要说明的一点是自PHP4以来,引入了引用赋值的概念,其实和多数语言的引用类似,不过我觉得最类似的是C/C++.因为它也用到了"&"符号。例如:  1 <?php
2 $foo = 'Bob';              // 赋值'Bob'给foo
3 $bar = &$foo;              // 通过$bar引用.注意&符号
4 $bar = "My name is $bar";  // 修改 $bar
5 echo $bar;
6 echo $foo;                // $foo 也修改了.
7 ?> 和其他语言一样,只能对有变量名的变量才可以引用。
3. PHP其他重要点
预定义变量
预定义变量在PHP是一个重要的概念。 PHP 提供了大量的预定义变量。由于许多这些变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。

需要注意的是 在PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值,亦或使用 $_ENV['HOME'] 来代替 $HOME 获取环境变量 HOME 的值。

从 PHP 4.1.0 开始,PHP 提供了一套附加的预定数组,这些数组变量包含了来自 web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。因此通常被称为自动全局变量(autoglobals)或者超全局变量(superglobals)。(PHP 中没有用户自定义超全局变量的机制。)超全局变量罗列于下文中;而且,你也将注意到旧的预定义数组($HTTP_*_VARS)仍旧存在。自 PHP 5.0.0 起,长格式的 PHP 预定义变量可以通过设置 register_long_arrays 来屏蔽。
下表是PHP的超全局变量:
超全局变量
 描述
 
$GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量的名称。从 PHP 3 开始存在 $GLOBALS 数组。
$_SERVER 变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET 经由 URL 请求提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。
$_POST 经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。
$_COOKIE 经由 HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。
$_FILES 经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)
$_ENV 执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。
$_REQUEST  经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。参见 import_request_variables()。
$_SESSION 当前注册给脚本会话的变量。类似于旧数组 $HTTP_SESSION_VARS 数组(依然有效,但反对使用)
变量的应用范围
 每个变量都有应用范围,那么PHP是怎么定义的呢?还是先看看下面代码吧:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5      $var=$var+1;
 6      echo "The ".$index." number is ".$var."<br>";
 7  }
 8  test(1);
 9  test(2)
10 ?>你认为以上的代码会显示什么结果呢?
如果你认为是下面:
结果1:
The 1 number is 1
The 2 number is 2不好意思,你的结果是错误的。
其实正确的结果应该是:
结果2
The 1 number is 1
The 2 number is 1那么你从其中发现了什么呢?我们可以知道虽然第2行的代码定义在外面,但第5行的变量和它是不一样的。第5行的变量仅在这个函数里使用。进一步的,如果我想调用第一行的变量而显示结果2.代码可以如下:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5      global $var;
 6      $var=$var+1;
 7      echo "The ".$index." number is ".$var."<br>";
 8  }
 9  test(1);
10  test(2)
11 ?>这个代码段和上面的代码段有何区别呢?注意第5行,多了一个global关键字。明白了吧。
那么还有没有其他方法呢?答案是肯定的。
代码如下:
 1 <?php
 2  $var=0;
 3  function test($index)
 4  {
 5     
 6      $GLOBALS["var"]=$GLOBALS["var"]+1;
 7      echo "The ".$index." number is ".$GLOBALS["var"]."<br>";
 8  }
 9  test(1);
10  test(2)
11 ?>代码有什么特殊的吗?那就是用到了$GLOBALS这个超全局变量。
PHP也有静态变量的说法。不过静态变量一般用在函数里,只能是局部变量了。看看下面代码吧:
 1 <?php
 2 function Test()
 3 {
 4    static $a = 0;
 5    echo $a."<br>";
 6    $a++;
 7 }
 8 Test();
 9 Test();
10 ?> 结果为
1
2
PHP还有一个相当令人兴奋的特性:可变变量
所谓可变变量,就是一个变量的变量名可以动态的设置和使用。
看看下面的例子:
1 <?php
2  $a="hello";
3  $hello="world";
4  echo $a." ".$$a;
5 ?> 输出的结果居然是hello,world.太神奇了。$$a其实就是$hello,因为$a的值是hello。
变量就这多了。下面看看常量。

常量
 PHP的常量是不是前面加const呢?让我们看一看。
不是的。在PHP必须用下面的方式定义。
bool define ( string name, mixed value [, bool case_insensitive] )
name 为常量名,value为常量的值。case_insensitive]为大小写敏感。默认为敏感。例如:
 1 <?php
 2 define("CONSTANT", "Hello world.");
 3 echo CONSTANT; // outputs "Hello world."
 4 echo Constant; // outputs "Constant" and issues a notice.
 5
 6 define("GREETING", "Hello you.", true);
 7 echo GREETING; // outputs "Hello you."
 8 echo Greeting; // outputs "Hello you."
 9
10 ?>

常量和变量不同:

常量前面没有美元符号($);

常量只能用 define() 函数定义,而不能通过赋值语句;

常量可以不用理会变量范围的规则而在任何地方定义和访问;

常量一旦定义就不能被重新定义或者取消定义;

常量的值只能是标量。

实例

<?php
$txt = "Hello World!";
$number = 16;
?>PHP 是一门松散类型的语言(Loosely Typed Language)
在 PHP 中,不需要在设置变量之前声明该变量。

在上面的例子中,您看到了,不必向 PHP 声明该变量的数据类型。

根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。

在强类型的编程语言中,您必须在使用前声明变量的类型和名称。

在 PHP 中,变量会在使用时被自动声明。


<?php
 //引用
 $one="test";
 two=&amp;$one;//相当于传地址,两个变量指向一个地址

//动态变量
$one="######";
$two="one";
$three="two";

echo $three."&lt;br&gt;";//输出"two"
echo $$three."&lt;br&gt;";//输出"one"
echo $$$three."&lt;br&gt;";//输出"######"

//php中有8个类型
//4种标量:   int integer
//     bool boolean
//     float,double,real
//     string
//2种复合类型: array
//  object
//2种特殊类型:  资源类型 resource
//   空类型   null

  
//整数的声明  
$int=10; //十进制声明
$int=045;//八进制声明
$int=0xff;//十六进制声明
$float=3.14E+5;//科学计数法
$float=3.14E-5;

//一下都是false的情况
$bool=false;
$bool=0;
$bool=0.000;
$bool=null;
$bool="";
$bool=" ";
$bool="0";
$bool=array();

//字符串的声明
//1.单引号和双引号都可以声明字符串
//2.声明的字符串没有长度限制
//3.在双引号的字符串中,既可以直接解析变量,又可以直接使用转义字符(可以转义单引号本身,也可以转义转义字符"")
//4.在单引号的字符串中,不可以直接解析变量,也不可以使用转义字符
//5.在双引号中不能再使用双引号,在单引号中不能再使用单引号
//6.最好使用单引号,
$str='aaaaa';
$str="aaaa";
//定界符声明字符串,大量字符串
//test是自定义的一个字符串,后面不能有任何字符,空格也不可以
//也要以test这个自定义的字符串结束,结束前不能有任何字符
$str=&lt;&lt;&lt;test
this write content......
test;
?>

php教程循环语句for while do while的用法
<?php
循环结构
 一、while循环
 while(表达式)
{
 循环体;//反复执行,直到表达式为假
}

<?php
$num = 1;

while ($num <= 10){
    print "Number is $num<br />";
    $num++;
}

print 'Done.';
?>

Do While 循环语句与while有一定的区别,它们的区别就是do while不管条件是否为真都会先执行一下,而while必须为真才会执行一次.

do {
echo "Mmmmm...I love cookies! *munch munch munch*";
} while ($cookies > 1);

输出就是.

Mmmmm...I love cookies! *munch munch munch


三、for循环

 根据循环条件不同,有两种类型的循环

一种:计数循环 (一般使用for)
另一种:条件型循环 (一般使用 while   do-while)

for (expr1; expr2; expr3) {
  statement
}

其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

下例是用 for 循环写的 "以后不敢了" 的例子,可以拿来和用 while 循环的比较。

<?php
for ($i=1; $i<=10; $i++) {
  echo "$i. 以后不敢了<br>n";
}
?>


输出表格

<HEAD>
  <TITLE>Value of Shares</TITLE>
  <H3>Table Showing Cost of Shares</H3>
  <BODY>
  <TABLE BORDER=1>
  <?php
  for ($shares = 1; $shares <= 20; $shares++){
     $cost = $shares * 20;
     echo "<TR><TD>The cost of $shares share/s is $cost #x0024s</TD>","n";
     $dividend = $cost * 0.10;
     echo "<TD>The dividend is $dividend #x0024s</TD></TR>  " ,"n";
  }
  ?>
  </TABLE>
  </BODY>
  </HTML>


累加计算
 

<?php
   $count = 1;
   while ($count < 5) {
      echo "$count squared = ".pow($count,2). "<br />";
       $count++;
   }
?>


do while 循环

<html>
<head>
<title>The do...while Statement</title>
</head>
<body>
<div>
<?php
    $num = 1;
    do {
      print "Execution number: $num<br />n";
      $num++;
    } while ( $num > 200 && $num < 400 );
?>
</div>
</body>
</html>

下们用到了php教程的了ereg函数来验证电子邮箱地址,用户名,url地址实例了。

把url拆分

<?
$url = "http://www.111cn.net";

$www_url = ereg("^(http://www).([[:alnum:]]+).([[:alnum:]]+)", $url, $regs);

if ($www_url) :        
     echo $regs[0];    
     print "<br>";
     echo $regs[1];    
     print "<br>";
     echo $regs[2];    
     print "<br>";
     echo $regs[3];    
endif;
?>


 
邮箱地址

<?php

    $s = 'm@t.ca';

    if (ereg ('([[:alpha:]]+)@([[:alpha:]]+).([[:alpha:]]{2,4})', $s, $matches))
    {
      echo "Regular expression successful. Dumping matchesn";
      var_dump ($matches);
    }
    else
    {
      echo "Regular expression unsuccessful.n";
    }

?>


 

邮箱地址二

<?
        $email="a@a.com";
        $is_com = ereg("(.)(com$)", $email);
        print $is_com;
?>

用户名验证

<?php
   $username = "Test";
   if (ereg("([^a-z])",$username)) echo "Username must be all lowercase!";
?>

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • vue Treeselect下拉树只能选择第N级元素实现代码

    这篇文章主要介绍了vue Treeselect下拉树只能选择第N级元素实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • 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
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • jquery if条件语句的写法

    下面小编就为大家带来一篇jquery if条件语句的写法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • uniapp 仿微信的右边下拉选择弹出框的实现代码

    这篇文章主要介绍了uniapp 仿微信的右边下拉选择弹出框的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-12
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15