多数大学生出来选择的工作和专业无关
首页 > 专业知识

使PHP自定义函数返回多个值

时间:2018-04-24 18:20:13 [来源]:郑州PHP培训学校

   使PHP自定义函数返回多个值

  PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止。有时候我们要求函数返回多个值时,用return是不可以把值一个接一个地输出的。但不可忽视的一点是,return语句可以返回任何类型的变量,这就是使自定义函数返回多个值的关键。请看代码:
  <?php
  function results($string)
  {
  $result = array();
  $result[] = $string;//原字符串
  $result[] = strtoupper($string);//全部换成大写$result[] = strtolower($string);//全部换成小写$result[] = ucwords($string);//单词的首字母换成大写return $result;
  }
  $multi_result = results('The quick brown fox jump over the lazy dog');print_r($multi_result);
  ?>
  输出结果:
  Array
  (
  [0] => The quick brown fox jump over the lazy dog[1] => THE QUICK BROWN FOX JUMP OVER THE LAZY DOG[2] => the quick brown fox jump over the lazy dog[3] => The Quick Brown Fox Jump Over The Lazy Dog)
  以上的代码创建了一个$result数组,然后把处理完毕并等待输出的值添加到$result中作为一个元素,最后把$result输出,这样做就实现了自定义函数返回多个值的目的。
  PHP中for循环语句的几种变型
  for语句可以说是PHP(同时也是多种语言)的循环控制部份最基本的一个语句了,for语句的执行规律和基础用法在这里就不多说,可以参见PHP手册for语句部分。PHP手册中对它的语法定义如下:
  for (expr1; expr2; expr3)
  statement
  下面说说for语句几种有用的变型。
  1、无限循环
  首先是人尽皆知的无限循环(亦可称“死循环”)。由于空表达式null在语法上是有效的,所以我们可以把for语句的三个表达式留空,这样就会产生不断执行for嵌套语句的效果。
  <?php
  for (;;) {
  //放置需要不断执行的语句
  }
  ?>
  虽然有一些任务会使用到无限循环,但是大多数程序任务,特别是PHP所能涉及的领域,在使用无限循环时都会添加一些终止循环的条件。
  <?php
  for (;;) {
  //如果是公元2199年,则跳出循环
  if (date('Y') == '2199') {
  break;
  }
  }
  ?>
  2、使用空表达式
  接下来就是说说在初始化语句expr1中使用null语法,留空expr1最常见的作用就是完成更为复杂的初始化工作。
  <?php
  if (isset($i)) {
  unset($i);
  if ((int) date('') < 2008) {
  $i = 0;
  } else {
  $i = 1;
  }
  } else {
  $i =3;
  }
  for (;$i < 10;$i++) {
  echo $i;
  }
  ?>
  同样道理,迭代表达式expr3也可能留空,也可以利用这点编写更为复杂的迭代式,比如说根据不同的条件调用不同的迭代式。
  而for语句中的条件语句expr2留空则是上面所说的无限循环,当然也可以添加一些更为复杂的条件去判断什么时候跳出循环,在此不在重复。
  3、多重循环
  使用多重循环来控制多个变量也是在for语句中使经常被忽略的一个特性。如下面的例子,在一般的任务中用到的一般会是双重循环,三重以上的循环一般意义不大。
  <?php
  for ($i = 0, $j = 10;$i <= 10;$i++, $j--) {echo "$i + $j = 10\r\n";
  }
  ?>
  以上代码将输出:
  0 + 10 = 10
  1 + 9 = 10
  2 + 8 = 10
  3 + 7 = 10
  4 + 6 = 10
  5 + 5 = 10
  6 + 4 = 10
  7 + 3 = 10
  8 + 2 = 10
  9 + 1 = 10
  10 + 0 = 10
  mysql5写入和读出乱码解决
  复制代码 代码如下:
  <?
  require("adodb/adodb.inc.php");
  $conn=newadoconnection('mysql');
  $conn->connect("localhost","root","2027205","bh38") or  die("连接不成功");$conn->execute("set names gb2312");
  $conn->execute("INSERT INTO `vv` (`cc`) VALUES ('换了个编码不知道行不行');") or die("错误");$rc=$conn->execute("select * from vv");
  while(!$rc->EOF)
  {
  echo($rc->fields["cc"]);
  $rc->movenext();
  }
  ?>
  当然我们也可以通过如下指令修改数据库的字符集alter database da_name default character set 'charset'.
  客户端以 gbk格式发送 ,可以采用下述配置:
  SET character_set_client='gbk'
  SET character_set_connection='gbk'
  SET character_set_results='gbk'
  这个配置就等价于 SET NAMES 'gbk'。
  现在对刚才创建的数据库操作
  mysql> use test;
  Database changed
  mysql> insert into mysqlcode values(null,'php爱好者');ERROR 1406 (22001): Data too long for column 'content' at row 1没有指定字符集为gbk,插入时出错
  mysql> set names 'gbk';
  Query OK, 0 rows affected (0.02 sec)
  指定字符集为 gbk
  mysql> insert into mysqlcode values(null,'php爱好者');Query OK, 1 row affected (0.00 sec)
  插入成功
  mysql> select * from mysqlcode;
  +----+-----------+
  | id | content   |
  +----+-----------+
  | 1  | php爱好着 |
  +----+-----------+
  1 row in set (0.00 sec)
  在没有指定字符集gbk时读取也会出现乱码,如下mysql> select * from mysqlcode;
  +----+---------+
  | id | content |
  +----+---------+
  | 1  | php???  |
  +----+---------+
  1 row in set (0.00 sec)
 

上一篇:php基础知识:函数基础知识

下一篇:php下使用无限生命期Session的方法