PHP基础知识

 PHP使用<?php ... ?>内嵌于html中, 使用echo输出html语句. 例如:

<?php
  echo '<p>Order processed.</p>';
?>

    通常, 在form表单中获取的变量值存储在$_POST, $_GET, $_REQUEST. 其中submit为GET存储在$_GET中, 为POST存储在$_POST中, 默认都存储在$_REQUEST中.

    而PHP中变量以"$"开头.

一个实际例子:

orderform.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form class="" action="info.php" method="post">
      <table border="0">
        <tr bgcolor="#cccccc">
          <td width="150">Item</td>
          <td width="50">Quantity</td>
        </tr>
        <tr>
          <td>Tires</td>
          <td align="center"><input type="text" name="tireqty" size="3" maxlength="3" /></td>
        </tr>
        <tr>
          <td>Oil</td>
          <td align="center"><input type="text" name="oilqty" size="3" maxlength="3" /></td>
        </tr>
        <tr>
          <td>Spark Plugs</td>
          <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3" /></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input type="submit" value="Submit Order" /></td>
        </tr>
      </table>
    </form>
  </body>
</html>

info.php:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <?php 
      $tireqty = $_POST['tireqty'];
      $oilqty = $_POST['oilqty'];
      $sparkqty = $_POST['sparkqty'];

      echo '<p>Your order is as follows: </p>';
      echo $tireqty.' tires<br />';
      echo $oilqty.' bottles of oil<br />';
      echo $sparkqty.' spark plugs<br />';
    ?>
  </body>
</html>

这里, 变量和字符串使用点号(".")进行连接. 而如果在双引号中, 则变量会被解释, 例如:

echo $tireqty.' tires<br />';

等价于:

echo "$tireqty tires<br />";

但单引号中一切都认为是字符串.

    使用define语法定义常量:

define('PI', 3.1415926);

理解PHP变量:

$GLOBALS: 全局变量数组.

$_SERVER: 服务端变量数组.

$_GET: 使用GET方法传递过来的变量.

$_POST: 使用POST方法传递过来的变量.

$_COOKIE: 所存储的cookie变量数组.

$_ENV: 环境变量数组.

$_REQUEST: $_GET/$_POST/$_COOKIE的集合.

$_SESSION: session变量的数组.

在变量引用方面, PHP使用"&"来解决:

$a = 5;
$b = $a;
$a = 7; // $b依旧等于5

而如果使用了"&":

$a = 5;
$b = &$a;
$a = 7; // 则$b也等于7

使用unset来解除变量所关联的引用:

unset($a);

在``字符内可填写: 可执行的操作:

$out = `ls -la`;
echo '<pre>'.$out.'</pre>';

而instanceof用于判断一个对象是否是一个特定类的实例:

class sampleClass{};
$myObject = new sampleClass();
if ($myObject instanceof sampleClass)
  echo "myObject is an instance of sampleClass";

使用gettype/settype来读取/设置变量的类型:

$a = 56;
// integer
echo gettype($a).'<br />';
settype($a, 'double');
// double
echo gettype($a).'<br />';

而PHP也提供了如下函数用于判断变量类型:

is_array()/is_double()/is_float()/is_real()/is_long()/is_int()/is_integer()/is_string()/is_bool()/is_object()/is_resource()/is_null()/is_scalar()/is_numeric()/is_callable()

三个特殊的测试函数:

isset(): 判断变量是否存在.

unset(): 删除变量.

empty(): 判断变量是否为空.

使用数组

使用array进行数组的初始化:

$arr = array(1, 2, 3, 4, 5);

而循环数组既可以使用for, 也可以使用foreach:

$arr = array(1, 2, 3, 4, 5);
for ($i = 0; $i < count($arr); $i++) {
  echo $arr[$i].' ';
}
echo '<br />';
foreach($arr as $item) {
  echo $item.' ';
}

但PHP的数组实际上为一个map结构.

$arr = array(1, 2);

实际上存储为:

$arr = array("0" => 1, "1" => 2);

而map型结构, 可使用如下的循环: foreach/each/list

$arr = array("a" => 1, "b" => 2);
foreach($arr as $key => $value) {
  echo $key.' => '.$value.' ';
}
echo '<br />';
reset($arr);
while ($ele = each($arr)) {
  echo $ele['key'].' => '.$ele['value'].' ';
}
echo '<br />';
reset($arr);
while (list($key, $value) = each($arr)) {
  echo $key.' => '.$value.' ';
}

关联数组的函数

使用sort函数对数组进行排序:

$arr = array('Tires', 'Oil', 'Spark Plugs');
sort($arr);
foreach($arr as $key => $val) {
  echo $key.' => '.$val.'<br />';
}

而sort函数支持第二个参数, 用于排序的判断: SORT_REGULAR, SORT_NUMERIC, SORT_STRING.

但如果针对的是map型数组, 则可使用asort(根据value进行排序)和ksort(根据key进行排序):

$arr = array('Tires' => 100, 'Oil' => 10, 'Spark Plugs' => 4);
asort($arr);
// Spark Plugs => 4 Oil => 10 Tires => 100 
foreach($arr as $key => $val) {
  echo $key.' => '.$val.' ';
}
echo '<br />';
ksort($arr);
// Oil => 10 Spark Plugs => 4 Tires => 100
foreach($arr as $key => $val) {
  echo $key.' => '.$val.' ';
}
echo '<br />';

反序情况下, 使用rsort()/arsort()/krsort()即可.

乱序可使用shuffle().

字符串操作和正则表达式

使用trim()/ltrim()/rtrim()去除字符串的空白字符.

strtoupper: 将字符串转为大写.

strtolower: 将字符串转为小写.

ucfirst: 将字符串的第一个字母大写.

ucwords: 将字符串中的每个单词的第一个字母大写.

explode进行字符串的分割存储于数组, 而implode/join将数组合并成字符串.

$content = "hello,world";
$arr = explode(',', $content);
// hello world
for ($i = 0; $i < count($arr); $i++) {
  echo $arr[$i].' ';
}
echo '<br />';
$con = implode(',', $arr);
// hello,world
echo $con;

substr(string str, int start[, int length]): 获取子字符串.

strcmp()/strcasecmp()/strnatcmp(): 比较字符串.

strlen(): 获取字符串的长度.

字符串中查找子串: strstr()/strchr()/strrchr()/stristr()

strpos()/strrpos()

替换字符串: str_replace()/substr_replace()

复用代码和编写函数

在PHP中可以使用require()或者include()来复用代码. require()和include()差不多, 唯一的区别在于当失败时候, require()提示错误, 而include()则仅仅警告.

require_once()/include_once()只加载一次文件.

reusable.php:

<?php
  echo 'Here is a very simple PHP statement.<br />';
?>

test.php:

<?php
  echo 'This is the main file.<br />';
  require('reusable.php');
  echo 'The script will end now.<br />';
?>

浏览器显示:

This is the main file.
Here is a very simple PHP statement.
The script will end now.

PHP中, 定义函数的格式为:

function func(){
  // ...
}

传参部分, 也支持传递默认参数:

function my_function($arg1, $arg2=2, $arg3=4) {
  echo 'arg1:'.$arg1.'<br />';
  echo 'arg2:'.$arg2.'<br />';
  echo 'arg3:'.$arg3.'<br />';
}

my_function(111, 333);

理解作用域

函数内声明的变量为局部变量.

函数外声明的变量为全局变量.

超级全局变量(例如$_POST等)不分局部全局.

使用require()仅仅只是内嵌文件, 并不会影响作用域.

关键字global用于定义全局变量.

变量可以使用unset()进行删除.

function fn() {
  global $var; 
  $var = 'content';
}
fn();
echo $var;

传参通常分为传值和传引用. 正常情况下传值, 特殊要修改传入的参数, 则传引用, 参数前加"&"即可.

转载于:https://my.oschina.net/u/3372587/blog/862941

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值