首页 > 编程技术 > php

学习使用PHP数组

发布时间:2016-11-25 17:13

PHP4.0中共有超过30个新的数组相关函数。其中很多通用函数答应你检查给定数组中是否存在特定对象、对数组元素计数、增加或删除元素,或对元素排序。

假如你有很大的一个数组,而所要完成的仅是找出一个存在的给定值,你可以使用in_array()以返回true 或 false。如下代码将输出“Not found in this array”

<?php
require_once('config.php');
function counter()

 session_start();
 $sql="select counter from counter";
 $result=@mysql_query($sql);
 if(!empty($result))
 {
  $row=mysql_fetch_array($result);
  $counter=++$row[counter];
  if(!$_SESSION['counter'])
  {
   $query="update counter set counter=$counter";
   $result=@mysql_query($query);
   if($result)
   {
    $_SESSION['counter']=true;
   }
  }
  $counter_len=strlen($counter);
  for($i=0;$i<$counter_len;$i++)
  {
   $number=substr($counter,$i,1);
   if(isset($number))
   {
    echo "<img" width=100% src='image/".$number.".gif'>";
   }
  }
 }
}
?>

看了些PHP的基础知识,自己在这里总结下:

  1、在HTML嵌入PHP脚本有三种办法:

<scriptlanguage="php">
//嵌入方式一
echo("test");
</script>

<?
//嵌入方式二
echo"<br>test2";
?>

<?php
//嵌入方式三
echo"<br>test3";
?>
  还有一种嵌入方式,即使用和Asp相同的标记<%%>,但要修改PHP.ini 相关配置,不推荐使用。

  2、PHP注释分单行和多行注释,和java注释方式相同。

<?
//这里是单行注释
echo"test";
/*
这里是多行注释!可以写很多行注释内容
*/
?>
  注重不要有嵌套注释,如/*aaaa/*asdfa*/asdfasdfas*/,这样的注释会出现问题。

  3、PHP主要的数据类型有5种,integer,double,string,array,object。

  4、函数内调用函数外部变量,需要先用global进行声明,否则无法访问,这是PHP与其他程序语言的一个区别。事例代码:

<?
$a=1;
functiontest(){
echo$a;
}
test();//这里将不能输出结果“1”。

functiontest2(){
global$a;
echo$a;
}
test2();//这样可以输出结果“1”。
?>
  注重:PHP可以在函数内部声明静态变量。用途同C语言中。

  5、变量的变量,变量的函数

<?
//变量的变量
$a="hello";
$$a="world";
echo"$a$hello";//将输出"helloworld"
echo"$a${$a}";//同样将输出"helloworld"
?>

<?
//变量的函数

functionfunc_1(){
print("test");
}

functionfun($callback){
$callback();
}

fun("func_1");//这样将输出"test"
?>
  6、PHP同时支持标量数组和关联数组,可以使用list()和array()来创建数组,数组下标从0开始。如:

<?
$a[0]="abc";
$a[1]="def";

$b["foo"]=13;

四、 使用继续抛出定制异常

  在PHP中,你可以抛出任何对象作为一个异常;但是,首先该异常应该继续自PHP的内置异常类。通过创建你自己的定制异常,你可以记录其它有关于该错误的信息,例如在一个日志文件中创建一个入口,或做你喜欢做的任何事情。你的定制异常将要做如下几件事情:

现在,你可以实现QueryException类。注重你是如何遍历调用栈以在脚本中查找实际导致错误的位置的。这正好适用于当抛出异常的DBQuery对象是一个继续自DBQuery对象的子类的情况。

  列表5:QueryException类。

/**
*查询异常
*
*当试图执行一个查询时,假如一个错误发生,将由{@link DBQuery}对象抛出错误
*/
class QueryException extends Exception
{
/**
* 查询文本
*
* @var字符串$QueryText;
*/
protected $QueryText;
/**
*来自数据库的错误号/代码
*
* @var字符串$ErrorCode
*/
protected $ErrorNumber;
/**
*来自数据库的错误消息
*
* @var字符串$ErrorMessage
*/
protected $ErrorMessage;
/**
*类构造器
*
* @参数:DBQuery $db,是抛出异常的查询对象
*/
public function __construct(DBQuery $query)
{
 /*得到调用栈*/
 $backtrace = $this->GetTrace();
 /*把行和文件设置到错误实际发生的位置*/
 if (count($backtrace) > 0) {
  $x = 1;
  /*假如查询类被继续,那么我们需要忽略由子类所进行的调用*/
  while((! isset($backtrace[$x]['line'])) ||
(isset($backtrace[$x]['class']) && is_subclass_of($backtrace[$x]['class'], 'DBQuery')) ||
(strpos(strtolower(@$backtrace[$x]['function']), 'call_user_func')) !== false ) {
   /*循环执行,只要没有行号或调用的函数是DBQuery类的一个子类*/
    $x;
   /*假如我们到达栈底,那么我们使用第一个调用者*/
   if (($x) >= count($backtrace)) {
    $x = count($backtrace);
    break;
   }
 }
 /*假如上面的循环至少执行一次,那么我们可以把它减1以查找实际的引起错误的代码行
 */
 if ($x != 1) {
  $x -= 1;

标签:[!--infotagslink--]

您可能感兴趣的文章: