PHP变量

global

函数内访问全局变量,需要添加global 关键字;

$a = 1;
$b = 2;
$c;
function sum() {
    global $a, $b, $c;
    $c = $a + $b;
}
sum();
echo $c;

运行结果:

3

 

Static

函数完成时会删除所有的变量来节省内存,如果不需要删除变量则使用 Static 变量名; 来声明变量

function num() {
    static $a = 1;
    echo $a;
    echo '<br />';
    $a++;
}
num();
num();
num();

运行结果:
1
2
3

参数传递

调用函数时传递参数

function num($a) {
    echo $a;
}
num(5);

运行结果:

5

 

var_dump()

用来输出变量的相关信息

$a = 1;
$b = 1.234;
$c = "wdnmd";
$d = true;
$e = array(1, 2, 3);
$f = null;
var_dump($a);
echo "<br />";
var_dump($b);
echo "<br />";
var_dump($c);
echo "<br />";
var_dump($d);
echo "<br />";
var_dump($e);
echo "<br />";
var_dump($f);

输出结果:
int(1)
float(1.234)
string(5) "wdnmd"
bool(true)
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
NULL

 

类型比较

php变量定义都是用$来定义,让系统自己判断定义类型,属于弱类型语言

在比较的时候就分了两种比较类型

  • 松散比较:只比较值;==
  • 严格比较:比较值与类型;===
if (1 == true)
    echo "1";
else
    echo "0";
echo "<br />";
    if (1 === true)
    echo "1";
else
    echo "0";

输出结果:

1
0

 

常量

常量为不可改变的值,并且是全局的

define(常量名, 常量值)

define("a", "hello");
echo a;

输出结果:

hello

类型转换

自动转换

系统自己判定转换需要的类型

    $a = 111;
    $b = '111abc';
    echo $a + $b;

结果:222

手动强制转换

强制转换类型

    $c = 'abc123';
    $d = '123abc';
    echo '<br />', (int)$c, '<br />',  (int)$d;

结果:
0
123

要点

  • 以字母或符号开头的字符串转换数值永远为0
  • 以数字开头的字符串转换数值只截取到字母或符号

数据类型判断

类型判断函数

is_xxx,用于判断指定数据类型是否相同,并返回true或false

    $a = 'wdnmd';
    var_dump(is_int($a), is_string($a));

结果:
bool(false) bool(true)

bool类型不能用echo去查看,可以使用var_dump查看

获取数据类型

gettype(数据名)

    $a = '1.1abc';
    echo gettype($a);

结果:
string

改变数据类型

settype(数据名)

    $a = '1.1abc';
    echo settype($a, 'int');

结果:
1

文件包含

include && require

引入其他php文件,区别在于include出现报错不影响代码继续执行,require则相反的遇到报错直接终止

把文件读取到字符串

file_get_contents() 把整个文件读入一个字符串中。

echo file_get_contents("test.txt");

解析json并返回数组

PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

$变量 = json_decode(Json数据, true);

读取ini文件并返回数组

parse_ini_file() 函数解析一个配置文件(ini 文件),并以数组的形式返回其中的设置。
第二个参数为true就是多维数组

$变量 = parse_ini_file("文件位置", true);

截取字符串

strrpos(); 获取指定字符的位置

    $str = "wdwafu%dwajdi";
    echo strrpos($str, '%');

结果:6

substr(); 截取指定位置字符串

echo substr('abcdef', 1);      //输出 bcdef
echo substr('abcdef', 1, 2);   //输出 bc
echo substr('abcdef', -3, 2);  //输出 de
echo substr('abcdef', 1, -2);  //输出 bcd

连接数据库

新建一个mysqli对象并存储数据库地址、用户名、密码、数据库名的信息;
使用if判断连接过程是否存在错误,同等于执行连接操作

$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn -> connect_error)
{
    die("连接失败: " . mysqli_connect_error());
} 
else
{
    echo "连接成功";
}

//关闭连接
mysqli_close($conn);

创建数据表

连接信息需指定数据库名称!
执行query方法并判断是否执行成功

$conn = new mysqli(地址,用户名,密码,数据库名);
$sql = "create table lovexhj(
    id int primary key,
    name varchar(30) not null,
    age int not null
)";

if($conn -> query($sql) === true)
{
    echo "<br />" . "数据表创建成功!";
}
else
{
    echo "<br />" . "错误!" . $conn -> error;
}

新建数据表

$sql = "create table lovexhj(
    id int primary key,
    name varchar(30) not null,
    age int not null
)";

if($conn -> query($sql) === true)
{
    echo "<br />" . "数据表创建成功!";
}
else
{
    echo "<br />" . "错误!" . $conn -> error;
}

插入多行数据

使用multi_query(语句);这个方法即可执行里面的多条语句并判断是否成功

$sql = "insert lovexhj(id, name, age) values(2, '闸总', 18);";
$sql .= "insert lovexhj(id, name, age) values(3, '闸总', 18);";
$sql .= "insert lovexhj(id, name, age) values(4, '闸总', 18);";
if($conn -> multi_query($sql) === true)
{
    echo "<br />" . "数据插入成功!";
}
else
{
    echo "<br />" . "错误!" . $conn -> error;
}

预处理语句

先使用prepare方法将语句传递到数据库但不执行,然后使用bind_param来绑定需要的参数对应的类型
可用类型为:

  • s:string字符串
  • i:int整型
  • d:double双精度浮点型
    最后填入对应参数并使用execute执行语句,从而达到只做了一次查询;
    对防止SQL注入是非常有用的
//预处理语句
$sql = $conn -> prepare("insert lovexhj values(?, ?, ?);");
$sql -> bind_param("isi", $a, $b, $c);

//设置参数
$a = "1";
$b = "wdnmd1";
$c = "18";
//执行
$sql -> execute();

$a = "2";
$b = "wdnmd2";
$c = "18";
$sql -> execute();

$a = "3";
$b = "wdnmd3";
$c = "18";
$sql -> execute();

echo "<br />插入成功!";

//关闭
$sql -> close();

查询数据

使用query方法将查询结果保存到变量里面,判断变量是否存在行数,最后通过fetch_assoc循环取出数据并输出

$sql = "select * from lovexhj;";
$result = $conn -> query($sql);

if($result -> num_rows > 0)
{
    while($row = $result -> fetch_assoc())
    {
        echo "ID:" . $row["id"] . " - " . "Name:" . $row["name"] . " - " . "age:" . $row["age"] . "<br>";
    }
}
else
{
    echo "没有数据";
}
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...