php入门篇-基础知识详解

 更新时间:2016年11月25日 15:07  点击:1341

-自定义变量
       a.不需明示数据类型
       b.加'$'
       c.以下划线或字母开头
       d.以有意义的单词
    -全等
       a.===
       b.判断大小及类型
    -数组
        创建数组方法
        a.array("key"=>"value")
        b.array[]=value;
        c.explode(separator,string);
        常用函数
        a.count       //统计数组条数
        b.is_array  //判断是否为数组
         遍历数组
      Foreach($arr as $key=>$value)
         说明:  指针跳转, 自动循环, 依次赋值
     -流程控制符
         a.  break           //结束一层循环
              break n        //结束n层循环
         b.  continue     //结束本次循环
         c.  return          //返回,结束当前脚本运行
         d.  exit              //结束脚本运行
         e.  return 与 exit的区别:见图
              图片:图2-1.JPG

 

3.函数
     -date("Y-m-d G:i:s") 
   a.Y 表示4位数字完整表示的年份 
      b.m  数字表示的月份,有前导零 
   c.d 月份中的第几天,有前导零的2位数字 
   d.G 小时,24小时格式,没有前导零  
        e. i  有前导零的分钟数 
        f. s  有前导零的秒数
    注意:假如你显示的时间跟电脑显示时间不一样,也就是相差8小时,可在php.ini里
                         面将date.timezone = "PRC"   //PRC代表中华人民共和
  -time()   //返回当前的 Unix 时间戳,也就是一串数字
  例: $nextWeek=time()+(7*24*60*60);//7天,24小时,60分钟,60秒 
      echo $nextWeek."<br>";  
      echo 'now:       '.date("Y-m-d")."n";
      echo 'Next Week: '.date("Y-m-d",$nextWeek);

      date(格式字符,时间戳)
      1. 将给定的时间戳以给定的格式输出来
      2. 如果省略时间戳,例如前面,则视为当前时间
  -自定义函数
    a.格式:function 函数名(){}
    b.使用与功能相关的名字  
  
       function_exists   //判断函数
       is_array             //判断数组
  -命名习惯
    a.使用良好命名 (必须地,其余仅供参考) 
    b.函数单词开头大小写  
       c.常量大写  
       d. 变量小写 
       提醒:PHP是区别大小写的

4.mysql
  -Mysql(小型关系型数据库管理系统)
    a.体积小
    b.速度快
    c.成本低
    d.开源
    MYSQL默认使用的是3306端口
  -存储引擎(存储表数据的类型)
    a.MyISAM:较高的插入、查询速度,但不支持事务;默认。
    b.InnoDB:支持事务
  -phpMyAdmin(Web方式访问Mysql)
  -类型小解
    精度:指数值数据中所存储的十进制数据的总位数。
    长度:指存储数据所使用的字节数
    int
    1.整数型
    2.精度10
    3.数值范围(-2147483648~2147483648)
    4.长度4
    注意:
    int(n)
    1.指定整数值的显示宽度
    2.实际的宽度小于指定列宽度时,从左侧填满宽度
    3.不改变长度,不改变数值范围
   
    字符型
    char/varchar(n)     //n表示长度
    当列中字符数据值长度一致时,使用char,长度不同时,使用varchar可以节省存储空间
  -基本sql语句
    a.SELECT 字段 FROM 表 WHERE 条件
    b.INSERT INTO 表(字段)VALUES(值)
    c.UPDATE 表 SET 更新内容 WHERE 条件
    d.DELETE FROM 表 WHERE 条件
     多练习是关键
     查询语句之后:
        1.分组:group by
        2.排序:order by ASC/DESC
        3.限制:limit O,N
        对于limit来说,O为偏移量,跟数组一样是从0开始算起,N为数量
        如:limit 1,5 相当于从第二条开始往后5条记录
             
5.php操作mysql
   -基本步骤:
       mysql_connect("hostname","username","password")      //连接MYSQL
       mysql_select_db("database_name");                             //打开数据库
       mysql_query($sql); //执行sql语句
       mysql_fetch_array($result) //取值

       mysql_query:
       1.sql=select 时,执行成功返回一个资源标识符,执行错误返回FALSE
          注意:查询成功不代表一定有结果,只说明语句正确
       2.sql=insert/update时,执行成功返回TRUE,执行错误返回FALSE

       mysql_fetch_array()
       1.取得query(sql)的结果集中的一行保存到数组
       2.依次调用将返回结果集中的下一行
       3.可以通过字段名作索引
   -中文编码
       避免乱码:
       1.建立数据库时,要选择相应的字符集。全国通用:GBK/gb2312;世界通用:UTF-8(建议选用)。
       2.连接mysql时,加入连接字符集   "set names GBK";
        注意:如果你set names UTF8,那么就应该设置页面编码为UTF-8
        

 代码如下 复制代码
      ///////////////封装Php连接Mysql函数////////////////
        function PHPConnectMysql($hostname,$username,$password,$database,$charaset){
             mysql_connect($hostname,$username,$password);
             mysql_select_db($database);
             mysql_query("set names $charaset");
        }

        小结:平时多积累,将特定功能函数化,以便重复利用

文章重点讲到了关于foreach循环和list循环语句的用法,好了下面我们就来看实现吧,费话也不说多了有需要的同学可以参考一下。

最近买了本php和mysql web开发,看到数组循环语句。值得自己关注下,特此留点字迹,以便以后读阅。

一般foreach用的比较多

 代码如下 复制代码

<?php
    $price=array('apple'=>10,'orange'=>20,'banner'=>30);
    foreach($price as $key=>$value)
    {
        echo $key.'=>'.$value.'<br>';
    }
    echo '<br>';
?>

还有个更高级和常见的方法

 代码如下 复制代码

<?php
    $shuiguo=array('apple'=>10,'orange'=>20,'banner'=>30);
   
    while(list($changpin,$jiage)=each($shuiguo))
    {
        echo "$changpin=>$jiage".'<br>';
    }
?>

以前还真没怎么关注下,今天自己动手,还不错,又了解新的东西了,还是自己太菜了,哎

list()函数可以用来一个数组分解成一系列的值,允许为新变量命名。不懂list的
http://www.111cn.net/phper/24/032a7c95555c423729b071aef4afd3c4.htm

两段代码输出是一样。

需要注意的是,当使用each()函数时候,数组将记录当前元素。如果希望在相同的脚本中使用两次该数组。就需要使用reset()降当前元素重新设置到数组开始处。

 代码如下 复制代码

<?php
    $price=array('apple'=>10,'orange'=>20,'banner'=>30);
    foreach($price as $key=>$value)
    {
        echo $key.'=>'.$value.'<br>';
    }
    echo '<br>';
    reset($price);
    while(list($key,$value)=each($price))
    {
        echo "$key=>$value","<br>";
    }
?>

这样就可以依然使用数组$price咯。 

一个超简单的初学者用的php教程之表单提交实例有需要的朋友参考一下。
下面我们将创建一个复杂的表单,代码如下所示。
 代码如下 复制代码
<form action="someform.php" method="post">
<table width="541" border="0">
<tr>
<td width="26%">姓名:</td>
<td width="74%"><input type="text" name="username" value="raymond" id="username"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" maxlength="10" id="password"/></td>
</tr>
<tr>
<td>年龄:</td>
<td>
<select name="age">
<option value=">16">小于16</option>
<option value="16-30" selected>16-30</option>
<option value="31-50">31-50</option>
<option value="51-80">51-80</option>
</select>
</td>
</tr>
<tr>
<td valign="top">自我介绍:</td>
<td><textarea name="intro" rows="3" cols="50" id="intro">请输入您的自我介绍</textarea></td>
</tr>
<tr>
<td><br />
体育爱好: </td>
<td><input type="radio" name="fave_sport" value="tennis" checked>
网球
<input type="radio" name="fave_sport" value="football">
足球
<input type="radio" name="fave_sport" value="baseball">
篮球
<input type="radio" name="fave_sport" value="polo">
保龄球 </td>
</tr>
<tr>
<td> 开发语言:</td>
<td><input name="from" type="hidden" id="from" value="注册表单">
<input type="checkbox" name="languages[]" value="php" checked id="languages[]">
php
<input type="checkbox" name="languages[]" value="java" id="languages[]">
java
<input type="checkbox" name="languages[]" value="perl" id="languages[]">
perl
<input type="checkbox" name="languages[]" value="cpp" id="languages[]">
c++
<input type="checkbox" name="languages[]" value=".net" id="languages[]">
.NET
<input type="checkbox" name="languages[]" value="delphi" id="languages[]">
delphi </td>
</tr>
<tr>
<td valign="top"><br>
<label> 开发工具:</label></td>
<td><select name="develop_ide[]" size="5" multiple id="develop_ide[]">
<option value="ZDE" selected>Zend Studio</option>
<option value="Eclipse">Eclipse</option>
<option value="Editplus">Editplus</option>
<option value="Ultraedit">Ultraedit</option>
<option value="Other">Other</option>
</select></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td><input type="submit" name="btn_submit" value="提交"/></td>
</tr>
</table>
</form>
该表单包括了常用表单元素:单行文本框、多行文本框、单选项(radio)、多选项(checkbox),以及多选菜单。下面进行详细的说明。
 
maxlength是与密码文本框关联的属性,它限制用户输入密码的最大长度为10个字符。
 
age列表框是列表菜单,它的命名属性下都有自己的值供选择。selected是一个特定的属性选择元素,如果某个option附加有该属性,在显示时就把该项列为第一项显示。
 
intro文本框中的内容,按照rows和cols显示文字、行和列宽。
 
fave_sport是一组单选按钮(radio),我们要按组命名元素名称,比如这一组单选按钮都叫做fave_sport,用户只可选择一个,发送脚本端也只存在一个值。
 
和单选项一样,所有多选项成员也须有同名的属性,而属性名称需要添加括号[],这样就把多选项的值以数组形式发送给PHP,languages就是这种形式。
 
checked标签是指单选项和多选项中的某个值,默认已经被选择。
上面表单的显示画面如图5-3所示。
图5-3
因为上面HTML中的form表单使用的是POST方法传递数据,所以用户提交的数据会保存到$_POST或$_REQUEST的超级全局数组中,我们根据$_POST数组中的值就可以处理提交的数据。
将上面表单中数据提交到someform.php脚本,该脚本的处理逻辑如下:
 代码如下 复制代码
//通过判断按钮的变量名是否在$_POST中定义,如果有表示该表单已提交
if(isset($_POST["btn_submit"])){
if (empty($_POST['username'])){
echo "您没有输入用户名";
exit(0);
}
if (empty($_POST['password'])){
echo "您没有输入密码: ";
exit(0);
}
echo "您的用户名: ".$_POST['user_name']."
";
echo "您的密码(明文): ".$_POST['password']."
";
echo "您的年龄: ".$_POST['age']."
";
if (!empty($_POST['languages'])){
echo "您选择的语言为:";
//处理用户选择兴趣的checkbox按钮产生的数组
foreach ($_POST['languages'] as $lang){
echo $lang. " ";
}
} else {
echo "您没有输入任何兴趣爱好";
}
if (!empty($_POST['develop_ide'])){
echo "您使用的开发工具为:";
//处理用户多选开发工具菜单产生的数组
foreach ($_POST['develop_ide'] as $ide){
echo $ide. " ";
}
} else {
echo "您没有选择开发工具";
}
echo "您的自我介绍: ".nl2br($_POST['intro'])."<br />";//nl2br(),在字符串中的每个新行 (n) 之前插入 HTML 换行符 (<br />)
";
echo "网页隐藏值(通过hidden标签值传递): ".$_POST['from']."
";
}
?>
一个php入门的基础教程关于in_array函数的使用方法,有需要的朋友可以参考一下。

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE。

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

Note:

如果 needle 是字符串,则比较是区分大小写的。


Note:

在 PHP 版本 4.2.0 之前,needle 不允许是一个数组。

 


注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

Example #1 in_array() 例子

 代码如下 复制代码
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

第二个条件失败,因为 in_array() 是区分大小写的,所以以上程序显示为:

Got Irix


Example #2 in_array() 严格类型检查例子

 代码如下 复制代码

<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, true)) {
    echo "'12.4' found with strict checkn";
}
if (in_array(1.13, $a, true)) {
    echo "1.13 found with strict checkn";
}
?>


注:in_array函数返回的是0,1

当转换为 boolean 时,以下值被认为是 FALSE: 
布尔值 FALSE
整型值 0(零)
浮点型值 0.0(零)
空白字符串和字符串 "0"
没有成员变量的数组
没有单元的对象
特殊类型NULL(包括尚未设定的变量)
所有其它值都被认为是 TRUE(包括任何资源)。 
警告
-1 和其它非零值(不论正负)一样,被认为是 TRUE

一个简单的关于PHP面向对象概念与实例文章,有需要的朋友可以简单的参考一下。

关键字和特殊变量
new,class,extends。这三个,大家都懂得。
::,范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量。还可以用于覆盖类中的成员和方法。 
parent和self。parent指的就是派生类在 extends 声明中所指的基类的名字。这样做可以避免在多个地方使用基类的名字。
$this 伪变量。$this指向当前的实例。$this却不一定是方法所属的对象。有时候类A内的代码会调用类B的一个静态方法。参考例子:php.net/manual/zh/language.oop5.basic.php">http://www.php.net/manual/zh/language.oop5.basic.php
static关键字。如果声明类成员或方法为static,就可以不实例化类而直接访问。但是,除了静态方法,不能通过一个对象来访问其中的静态成员。在静态方法中,不使用$this。而使用self:: 。
final关键字。可以作用于类(class)和方法(function),会使类不能被继承,方法不能被覆盖。
属性
  可以初始化,但初始化的值必须是常数。常量前面用const个关键字,常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。

构造函数和析构函数
  这两个函数都不会暗中调用基类的响应函数,这跟java的构造器机制不一样。要达到这样的效果,必须显示执行。析构函数中不能抛出异常。

抽象类:声明为抽象的类方法不能包含具体实现,抽象类不能实例化。必须先被继承,再实例化其子类。而且子类的访问控制要和抽象类一样,或者更加宽松。抽象类至少包含一个抽象方法的。

接口
使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。   
定义的所有方法都必须是public,且方法为空
可以定义常量,但是没有属性
接口的实现(implements)必须实现所有方法,而且可以实现多个接口(注意,方法不能重名)。
接口可以被另外的接口继承 (extends)

 代码如下 复制代码

<?
/*
* 定义了 User接口.
* 和子类 NormalUser,VipUser,InnerUser
*/
//User接口,定义了三个抽象方法.
interface User{
 public function getName();
 public function setName($_name);
 public function getDiscount();
}
abstract class AbstractUser implements User{
 private $name = ""; //名字
 protected  $discount = 0; //折扣
 protected  $grade = "";  //级别
 
 public function __construct($_name){
  $this->setName($_name);
 }
 public function getName(){
  return $this->name;
 }
 public function setName($_name){
  $this->name = $_name;
 }
 public function getDiscount(){
  return $this->discount;
 }
 
 public function getGrade(){
  return $this->grade;
 }
}
class NormalUser extends AbstractUser  { 
 protected  $discount = 1.0;
 protected  $grade = "NormalUser";
}

class VipUser extends AbstractUser {
 protected  $discount = 0.8;
 protected  $grade = "VipUser";
}

class InnerUser extends AbstractUser {
 protected  $discount = 0.7;
 protected  $grade = "InnerUser";
}
?>

Product.php

 代码如下 复制代码
<?
include_once("User.php");
include_once("Product.php");
//买了产品到底多少钱呢?
class ProductSettle{
 public static function  finalPrice(User $_user,Product $_product,$number = 1){
  $price = $_user->getDiscount() * $_product->getProductPrice() * $number;
  return $price;
 }
}
?>


下面的例子是实现。大家可以自己分析下。

 代码如下 复制代码

<?
include_once("./class/User.php");
include_once("./class/Product.php");
include_once("./class/ProductSettle.php");

$number = 10;
$book = new BookOnline("设计模式");


$user = new NormalUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;


$user = new vipUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;

$user = new InnerUser("Tom");
$price = ProductSettle::finalPrice($user,$book,$number);
$str =  "您好,尊敬的用户 " . $user->getName() . " <br>";
$str .= "您的级别是 ". $user->getGrade() .", <br>";
$str .= "您的折扣是 " . $user->getDiscount() . "<br>";
$str .= "购买 $number 本 《 ". $book->getProductName() ;
$str .=  "》的价格是 $price <br><br>";
echo $str;
?>

[!--infotagslink--]

相关文章

  • 轻松学习C#的基础入门

    轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
  • photoshop画斜线/直线/虚线的入门级教程

    这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • PHP安装threads多线程扩展基础教程

    一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
  • 编程新手必须掌握的:session与cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
  • Flex网页布局基础入门及实例教程

    Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。本教程我们来学习一下Flex布局的基本语法知识及运用实例。 网页布局(layout)是CSS的一...2016-09-14
  • 一文秒懂JavaScript DOM操作基础

    通过这篇文章帮助大家快速学习JavaScript DOM操作基础的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧...2021-04-30
  • react hooks入门详细教程

    这篇文章主要介绍了react hooks入门详细教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-06
  • 从零开始的html教程(7):html表单基础之一

    一聚教程网 从零开始的html教程(7),html表单的基础,零基础也能轻松学会html,希望大家喜欢 一、html的表单 表单负责网页中用户输入数据采集的功能,利用<form>标签来定...2016-12-31
  • python基础之局部变量和全局变量

    这篇文章主要介绍了python局部变量和全局变量,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下...2021-10-22
  • MySQL的日志基础知识及基本操作学习教程

    MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句...2015-11-24
  • 详解Servlet入门级设置(超详细 IDEA2020版)

    这篇文章主要介绍了详解Servlet入门级设置(超详细 IDEA2020版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
  • php入门教程(类实例教程)

    这里主要讲到关于在php教程类的调用,申请明,使用以前各种类的实例方法与操作过程,让你清楚的知道php类的construct destruct clone call wake sleep用法。 简单购物车...2016-11-25
  • Painter基础教程之图像水管分享

    今天小编在这里就来给Painter的这一款软件的使用者们来说下基础教程之图像水管,各位想知道的使用者们,那么下面就快来跟着小编一起看看吧。 给各位Painter软件的使...2016-09-14
  • MySQL的InnoDB引擎入门学习教程

    MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快...2015-11-24
  • Jquery ajax基础教程

    jQuery的Ajax带来了无需刷新的web页面革命。这里就详细介绍一下jQuery所涉及到的Ajax操作。(无需特殊说明,均需要有服务器配置,这里本人用的是Tomcat 7)1.基于请求加载文件数据这里的请求通常都是网页的某些操作,如点击等...2015-11-24
  • 阿里云ECS服务器入门使用流程(新手必看教程)

    这篇文章主要介绍了阿里云ECS服务器入门使用流程(新手必看教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-13
  • php入门级教程:PHP大小写问题

    PHP大小写问题算是一个入门级的教程了,在此小编为php初学者介绍php开发中大小写的一些例子,希望可以帮助到各位。 今天写代码的时候发现自己代码的一处错误: $m_cate...2016-11-25
  • python开发App基础操作API使用示例过程

    这篇文章主要为大家介绍了python开发App基础操作API使用的示例过程有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2021-10-30