003——继续

作者: 土乒76 | 来源:发表于2017-07-08 01:05 被阅读18次

输出几个$_SERVER的信息

<?php 
    $arr1 = array(
        "PHP_SELF"=>"网页路径",
        "DOCUMENT_ROOT"=>"站点路径",
        "SERVER_NAME"=>"服务器名",
        "REMOTE_ADDR"=>"客户端IP", 
        "SERVER_ADDR"=>"服务器IP"
        );

    echo "<table border='1'>";
    foreach ($arr1 as $key => $value) {
        echo "<tr>";
            echo "<td>$key</td>";
            echo "<td>\$_SERVER['$key']</td>";
            echo "<td>" . $_SERVER["$key"] . "</td>";
            // echo "<td>" . $_SERVER[$key] . "</td>";
            echo "<td>" . $value . "</td>";
        echo "</tr>";
    }
    echo "</table>";
?>

计算器改进

// index.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <?php
        $val1 = "";
        $val2 = "";
        $result = "";
        $symbol = "";
        if($_POST) {// 有提交数据时才执行
            $val1 = $_POST['val1'];
            $val2 = $_POST['val2'];
            $symbol = $_POST['symbol'];
            if(is_numeric($val1) && is_numeric($val2)) {// 判断是否为数字
                switch ($symbol) {
                    case '+':
                        $result = $val1 + $val2;
                        break;
                    case '-':
                        $result = $val1 - $val2;
                        break;
                    case '*':
                        $result = $val1 * $val2;
                        break;
                    case '/':
                        $result = $val1 / $val2;
                        break;
                }
                // echo $result;
            }
            else{
                echo "请输入正常的痒马号";
            }
        }
    ?>
    <form method="post">
        <input type="text" name="val1" value="<?php echo $val1; ?>">
        <select name="symbol" id="">
            <option value="+" <?php if($symbol == "+") { echo "selected"; } ?>>+</option>
            <option value="-" <?php if($symbol == "-") { echo "selected"; } ?>>-</option>
            <option value="*" <?php if($symbol == "*") { echo "selected"; } ?>>*</option>
            <option value="/" <?php if($symbol == "/") { echo "selected"; } ?>>/</option>
        </select>
        <input type="text" name="val2" value="<?php echo $val2; ?>">
        <input type="submit" value="提交">
        <input type="text" value="<?php echo $result; ?>">
    </form>
</body>
</html>

进制

// 十进制
$n = 123
// 八进制
$n = 0123
// 十六进制
$n = 0x123
进制转换

dec:十进制,bin:二进制,oct:八进制,hex:十六进制

// 十进制转二进制
decbin()
<?php 
    $v1 = decbin(123);
    echo $v1."其类型为:".getType($v1);;
?>
// 手工转换:除2取余倒着写
$v1 = 123;
123/2 > 61 余:1
61/2 > 30  余:1
30/2 > 15  余:0
15/2 > 7   余:1
7/2 > 3    余:1
3/2 > 1    余:1
1/2 > 0    余:1
// 十进制转八进制
<?php 
    $v1 = decoct(178);
    echo $v1;// 262
?>
// 手工转换:除8取余倒着写
$v1 = 178;
178/8  22  余:2
22/8   2   余:6
2/8    0   余:2
// 十进制转十六进制
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
<?php 
    $v1 = dechex(178);
    echo $v1;// b2
?>
// 手工转换:除16取余倒着写
178/16  11  余:2
11/16   0   余:11
// 二进制转十进制
1234 = 1x10 3+2x10 2+3x10 1+4x10 0
10001 = 1x10 4+0x10 3...+1x10 0

浮点数

1.23E3:1.23乘以10的3次方

字符串

// 单引号可以识别的两个转移符
\\
\'
// 双引号可以识别的转移字符有
\\
\"
\n
\r
\t
\$

数组

<?php 
    $arr1 = array("a", "b", 'c');
    foreach ($arr1 as $key => $value) {
        echo $key;
        echo $value."<br/>";
    }
?>

对象

<?php 
    class Person {
        public $name = "Aaayang";
        public $age = 18;
        public function introMe() {
            echo "hello world<br/>";
            echo "name:".$this -> name."<br/>";
            echo "age:".$this -> age;
        }
    }
    $person1 = new Person();
    $person1 -> name = "BBB";
    $person1 -> age = 22;
    $person1 -> introMe();
?>

资源类型

是指对外部数据(数据库,文件,图片等)的引用,非PHP代码生成的

类型转换

自动转换是弱类型语言最基本的一个特征

if(aaa) { ... }// 转换为Boolean类型
// 强制转换
$val = (int)7.8;

位运算符

位运算符都是针对整数的二进制形式进行的

按位与
1 & 1 => 1
1 & 0 => 0
0 & 1 => 0
0 & 0 => 0
按位或
1 | 1 => 1
1 | 0 => 1
0 | 1 => 1
0 | 0 => 0
按位非
~1 => 0
~0 => 1
异或
// 相同就是0,不同就是1
1 ^ 1 => 0
0 ^ 0 => 0
1 ^ 0 => 1
0 ^ 1 => 1
按位与(不分进制)
// A & B// A和B两个普通数字,其内部会按十进制进行计算,将每一对对应的二进制数字再进行&运算之后的结果
<?php 
    // 一个数字的二进制通常是32位的0和1的组合,也可能是64位,为了说明问题方便,我们用8位
    $r1 = 9 & 13;
    // 1001
    // 1101
    // ----
    // 1001    >   9
    echo $r1;// 9
?>
按位或(不分进制)
<?php 
    $num = 18 | 23;
    // 0001 0010
    // 0001 0111
    // ---------
    // 0001 0111   >   23
    echo $num;
?>
<?php 
    $val = 18 | 10;
    // 0001 0010
    // 0000 1010
    // ---------
    // 0001 1010   >   26
    echo $val;
?>
按位左移运算
// 形式:A << n,A被整体左移n位,可以是普通数字,但按二进制去运算
<?php 
    $val = 18 << 3;
    // 0001 0010,整体左移3位,移出的不要,空下来的补0,结果是1001 0000
    echo $val;// 144
?>
右移运算
// A >> 2,右边移出去的不管了,左边空出来的补符号位
<?php 
    $val = 9 >> 2;
    // 0000 1001
    // 0000 0010   >   二进制转10进制:1乘以2的一次方结果是2

    echo $val;// 2
?>
按位非
// 将一个数字的二进制的每一位进行取反得到的结果

按位异或
// 将一个数字的二进制的每一位进行异或得到的结果

原码、反码、补码

原码:原来的二进制码,但在实际的计算机运行过程中,常常不用原码,所以就有了补码,反码。一个二进制数的第一位是符号位,0表示整数,1表示负数。

反码:正数的反码是其本身,负数的反码就是将原码的非符号部分,每一位进行取反。

补码:正数的补码是其本身,负数的补码就是将原码的非符号部分,每一位进行取反后整体加1。
<?php 
    // 以8位为例子
    0000 0111   >   7   ->  正数的反码:0000 0111
    1000 0111   >   -7  ->  负数的反码:1111 1000

    0000 0111   >   7   ->  正数的补码不变
    1000 0111   >   -7  ->  负数的补码符号位不变,每一位取反后整体加1,1111 1000 -> 1111 1001
?>
<?php 
    $v1 = 5;// 即是原码,又是补码
    $v2 = 3;// 
    $r = $v1 + $v2;
    // cpu内部运算模拟实例:
    // 5:0000 0101
    // 3: 0000 0011
    // ------------
    // r: 0000 1000    >    1乘以2的3次方

    $num = $v1 - $v2;// $v1 + (-$v2),计算机中减去一个数是加一个负数

    // 5:0000 0101    >    5(即是原码有事补码)
    // 3: 1000 0011    >    3(即是原码有事补码)
    //-3: 1000 0011    >    (原码)
    //-3: 1111 1100    >    (反码) 
    //
    //    1111 1100
    //    +       1
    //    ---------
    //    1111 1101    >    (补码:负数的补码符号位不变,其余为取反后加1)
    // ------------
    // 0000 0101    >   5(补码)
    // 1111 1101    >   -3(补码)
    // ---------
    // 0000 0010    >   补码为2,则其原码也是2
?>
数据在CPU内部都是按补码进行运算
原码、反码、补码转换过程是系统内部的工作,且转换时符号位不变
用补码运算时(相减操作),符号位当做一个普通的二进制数参与运算

@

通常放在可能发生错误的前面抑制报错,例如连接数据库

@mysql_connect( ... ) or die("数据库连接失败")

sleep()

<?php
    echo date("Y-m-d H:i:s")."<br/>";
    sleep(10);
    echo date("Y-m-d H:i:s");
?>

文件加载

// 如果加载文件失败、重复则有不同的处理规则
include// 引用失败时,警告并继续
include_once
require// 引用失败时,警告并终止
require_once

include "文件路径"
include("文件路径")

相关文章

网友评论

    本文标题:003——继续

    本文链接:https://www.haomeiwen.com/subject/icnrhxtx.html