PHP首页投稿(暂停使用,暂停投稿)我爱编程

PHP Day4:基础回顾与加强

2016-06-20  本文已影响198人  王中阳

多维数组

示例代码
<?php
$cars = array
   (
   array("Volvo",33,20),
   array("BMW",17,15),
   array("Saab",5,2),
   array("Land Rover",15,11)
   );
现在这个两维数组包含了四个数组,并且它有两个索引(下标):行和列。
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):
echo $cars[0][0].": 库存:".$cars[0][1].", 已售:".$cars[0][2].".<br>";
echo $cars[1][0].": 库存:".$cars[1][1].", 已售:".$cars[1][2].".<br>";
echo $cars[2][0].": 库存:".$cars[2][1].", 已售:".$cars[2][2].".<br>";
echo $cars[3][0].": 库存:".$cars[3][1].", 已售:".$cars[3][2].".<br>";
?>

运行结果:
Volvo: 库存:33, 已售:20.
BMW: 库存:17, 已售:15.
Saab: 库存:5, 已售:2.
Land Rover: 库存:15, 已售:11.
FOR循环的代码
<?php
$cars = array
   (
   array("Volvo",33,20),
   array("BMW",17,15),
   array("Saab",5,2),
   array("Land Rover",15,11)
   );
   
for ($row = 0; $row <  4; $row++) {
   echo "<p><b>行数 $row</b></p>";
   echo "<ul>";
   for ($col = 0; $col <  3; $col++) {
     echo "<li>".$cars[$row][$col]."</li>";
   }
   echo "</ul>";
}
?>
我们也可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):
行数 0

Volvo
33
20
行数 1

BMW
17
15
行数 2

Saab
5
2
行数 3

Land Rover
15
11

Directory函数

  1. chdir() 改变当前的目录。
  2. chroot() 改变根目录。
  3. closedir() 关闭目录句柄。
  4. dir() 返回 Directory 类的实例。
  5. getcwd() 返回当前工作目录。
  6. opendir() 打开目录句柄。
  7. readdir() 返回目录句柄中的条目。
  8. rewinddir() 重置目录句柄。
  9. scandir() 返回指定目录中的文件和目录的数组。、

Filesystem函数

Filesystem函数允许您访问和操作文件系统。

  1. unix和Windows兼容性问题

使用中查手册的key函数

  1. php filter:PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。
  2. php ftp:通过文件传输协议(FTP)提供对文件服务器的客户端访问。
  3. php http:允许您在其他输出被发送之前,对由web服务器发送到浏览器的信息进行操作。
  4. php libxml:Libxml 函数和常量与 SimpleXML、XSLT 以及 DOM 函数一起使用。
  5. php mail:mail() 函数允许您从脚本中直接发送电子邮件。
  6. php math:Math 函数能处理 integer 和 float 范围内的值。
  7. php 杂项函数:我们把不属于其他类别的函数归纳到杂项函数类别。
  8. php pdo:php数据对象(pdo)扩展为php访问数据库定义了一个轻量级的一致接口。
  9. php simplexml:提供了一种获取xml元素名称和文本的简单方式。
  10. php string:PHP String 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
  11. php xml parse:XML 函数允许您解析 XML 文档,但无法对其进行验证。
  12. php zip file:Zip File 函数允许您读取压缩文件。
  13. php time zones:支持的时区。
  14. php 图像处理:PHP 提供了丰富的图像处理函数。
  15. php restful(Representational State Transfer):一种架构约束条件和原则。

PHP Restful

REST(英文:Representational State Transfer,简称REST) ,指的是一组架构约束条件和原则。

  1. 符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:

基本语法回顾

  1. static:让局部变量不被删除。(在php中,当一个函数执行完,函数中的变量通常都会被删除)
  1. 参数作用域:参数是通过调用代码将值传递给函数的局部变量,作为函数声明的一部分。
<?php

function myTest($x)
{
echo $x;
}

myTest(5);

?>
  1. echo语句
  1. PHP对象
<?php
class Car
{
  var $color;
  function Car($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>
  1. NULL值
  1. php常量
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
  1. 运算符
<?php
var_dump(intdiv(10, 3));
?>
输出结果是int(3)
$x="Hello";
$x .= " world!";
echo $x; // outputs Hello world! 
  1. ++x:x先加1,再返回x
  2. x++:先返回x,再加1
  3. --x,x--同理
<?php
$x=10; 
echo ++$x; // 输出11

$y=10; 
echo $y++; // 输出10

$z=5;
echo --$z; // 输出4

$i=5;
echo $i--; // 输出5
?>
  1. x === y 恒等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false
  2. x <> y(或者x != y) 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
  3. x !== y 不恒等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
  1. x or y 或 如果 x 和 y 至少有一个为 true,则返回 true
x=6 
y=3 
(x==6 or y==5) 返回 true
  1. x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true
x=6
y=3 
(x==6 xor y==3) 返回 false
  1. x == y 相等: 如果 x 和 y 具有相同的键/值对,则返回 true
  2. x === y 恒等: 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
  3. x !== y 不恒等 如果 x 不等于 y,则返回 true
(expr1) ? (expr2) : (expr3) 
  1. expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
  2. 自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
    示例代码:
<?php
$test = '菜鸟教程';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;

// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>
  1. 注意:PHP_EOL 是一个换行符,兼容更大平台。比如Windows下的/n/r
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
  1. 语法是这样的:$c = $a <=> $b;
echo 2 <=> 1; // 1
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1

如果$a > $b, $c 的值为1
如果$a == $b, $c 的值为0
如果$a < $b, $c 的值为-1

数组 array()

  1. 在 PHP 中,有三种类型的数组:
<?php
//php的数值数组
$test = array("who","are","you");
$alength = count($test);
for($x=0;$x<$alength;$x++){
echo $test[$x];
    echo "<br>";
}
打印结果:
who
are
you

//php的关联数组
$connectArray = array('first'=>'maiyatian',
    'second'=>'huawei',
    'third'=>666);
echo $connectArray['first'].'-'.$connectArray['second'].'@'.$connectArray['third'].'<br>';
打印结果:
maiyatian-huawei@666

//遍历关联数组
$age = array('jason'=>12,
    'mike'=>34,
    'jenny'=>23);
foreach ($age as $x=>$x_value){
    echo 'key:'.$x.' Value:'.$x_value.'<br>';
}

打印结果:
key:jason Value:12
key:mike Value:34
key:jenny Value:23
?>
  1. 数组排序
    数组中的元素可以按字母或数字顺序进行降序或升序排列。

PHP超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。

详解
  1. $GLOBALS
$x=25;
$y=75;
function submit(){
$GLOBALS['z'] = $GLOBALS['x']+$GLOBALS['y'];
}
submit();
echo $z;

注意:

  1. $_SERVER
  1. PHP $_REQUEST
<html>
<form method=post action='<?php echo $_SERVER['PHP_SELF'];?>'>
Name:<input type='text' name='fname' />
    <input type=submit>
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</html>
$_REQUEST结果
  1. PHP $_POST
//在php中以$_POST的方式获得html中post提交的数据
<form method=post action='<?php echo $_SERVER['PHP_SELF'];?>'>
Name:<input type='text' name='fname' />
    <input type=submit>
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
  1. PHP $_GET
<a href="test.php?subject=PHP&web=runoob.com">测试 $_GET</a>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

ForEach循环

用于遍历数组

<html>
<body>

<?php
$beijings = array('beibei','jingjing','huanhuan','yingying','nini');
foreach ($beijings as $beijing){
    echo $beijing."<br>";
}
?>

</body>
</html>

PHP函数

  1. 创建php函数
function functionName()
{
要执行的代码;
}
自定义函数示例
function myFunc($x, $y)
{
    $total = $x + $y;
    return $total;
}

echo 'operation:'.myfunc(1,3);

PHP魔术变量之 TRAIT代码复用

//魔法变量之 trait
class  base
{
    public function sayHello()
    {
        echo 'hello';
    }
}

trait sayhello
{
    public function sayHello()
    {
        parent::sayHello();
        echo 'world';
    }
}

class myHelloWord extends base
{
    use sayHello;
}

$o = new myHelloWord();
$o->sayhello();

如果是有基础的同学,那么看上面的代码是非常好理解的:

其他PHP魔术变量

PHP命名空间(namespace)

php命名空间解决的问题
在同一个文件下定义不同的命名空间
< ?php  
namespace MyProject1;  
// MyProject1 命名空间中的PHP代码  
 
namespace MyProject2;  
// MyProject2 命名空间中的PHP代码    
 
// 另一种语法
namespace MyProject3 {  
 // MyProject3 命名空间中的PHP代码    
}  
?>  

注意:

<html>
<?php
namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 
?>
子命名空间
<?php
namespace MyProject\Sub\Level;  //声明分层次的单个命名空间

const CONNECT_OK = 1;
class Connection { /* ... */ }
function Connect() { /* ... */  }

?>

上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。

<?php
namespace Foo\Bar;
include 'file1.php';

const FOO = 2;
function foo() {}
class foo
{
    static function staticmethod() {}
}

/* 非限定名称 */
foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
echo FOO; // resolves to constant Foo\Bar\FOO

/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
                                  // 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
                                  
/* 完全限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>
<?php
namespace Foo;

function strlen() {}
const INI_ALL = 3;
class Exception {}

$a = \strlen('hi'); // 调用全局函数strlen
$b = \INI_ALL; // 访问全局常量 INI_ALL
$c = new \Exception('error'); // 实例化全局类 Exception
?>
延伸之const用法
<?php
Class Person{
    // 定义常量
    const country = "中国";

    public function myCountry() {
        //内部访问常量
        echo "我是".self::country."人<br />";
    }
}

// 输出常量
echo Person::country."<br />";

// 访问方法
$p1 = new Person();
$p1 -> myCountry();
?>

结果:
中国
我是中国人

一个敲代码,爱分享的人,我在这里!

来玩啊
上一篇下一篇

猜你喜欢

热点阅读