即使那么孤独地活在这个世界上,也从未偏离自己的方向,即便对着空无一人的屋子,也会大声说,“我回来了!”

PHPstorm配置

下载安装即可,需要配置的问题在于运行关键。一般来说默认开启64423端口,但是有的时候会出错,需要自行安装Apache环境,使用PHPSTUDY就好了,然后创建工程项目在PHPSTUDY的www目录下,PHPstorm打开设置,Deployment中添加一个新的对象,然后apply即可。没啥技术含量,没清楚直接百度就好了。需要注意的是,因为PHPstudy不支持中文和空格,所以在目录与文件名都不要出现这些。

打印输出

打印与换行

在PHP中打印输出有两种,第一种是echo,第二种就是print。一般常用的都是echo,注意因为PHP是嵌套在web网页中显示,如果要换行的话echo’<br>‘,关于html中的换行标签在之前的笔记有提及过。

<?php
echo 'hello  word';
print '<br>';
print 'hello langzi';
?>

运行效果:

hello word
hello langzi

打印中文

就像在Python中一样,输出中文需要设置编码,设置方法直接加上header(“Content-type: text/html; charset=utf-8”);即可。

<?php
header("Content-type: text/html; charset=utf-8");
echo 'hello  word';
print '<br>';
print 'hello langzi';
?>
<?php
echo '我换行了吗';
print '貌似并没有';
?>

运行结果:

hello word
hello langzi我换行了吗貌似并没有

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。关于echo,print_r(),var_dump()的区别可以看看这篇文章php调试时echo,print_r(),var_dump()区别

变量与拼接不同类型变量

<?php
header("Content-type: text/html; charset=utf-8");
$name='langzi';
echo $name;
$age=18;
echo '<br>';
print $age;
echo '<br>';
$info=$name.$age;
echo $info;
echo '<hr>';
echo 'username:'.$name;
echo '<br>';
echo 'age:'.$age;
?>

运行结果:

langzi
18
langzi18
-------------------------------------------------------------------------------
username:langzi
age:18

很神奇的是,在PHP中不同类型的数据类型可以直接拼接起来,不像在Python中还要转换类型,PHP不愧是最好的语言啊~。
PHP定义变量的方法是在变量名前面加上$符号,凡是加上该符号的都是变量,并且PHP中数据拼接在一起使用的是一个点.,不像Python中使用+号这么直观,因为PHP中+号是对数字类型操作的,比如1+1运算,Python中+号对数字类型字符串类型都可以哦。
和Python一样,PHP中也有变量作用域,使用方法与作用与Python一致,建议回顾一下Python的作用域

数据类型转换

当然在PHP中不同的数据类型可以转换,PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

  1. (int)、(integer):转换成整形
  2. (float)、(double)、(real):转换成浮点型
  3. (string):转换成字符串
  4. (bool)、(boolean):转换成布尔类型
  5. (array):转换成数组
  6. (object):转换成对象

其中用的最多是转换成数字型和字符串型。

使用方法:

方法一
<?php   
$str="123.9abc";   
$int=intval($str);     //转换后数值:123   
$float=floatval($str); //转换后数值:123.9   
$str=strval($float);   //转换后字符串:"123.9"    
?>  
方法二
<?php   
$num4=12.8;   
$flg=settype($num4,"int");   
var_dump($flg);  //输出bool(true)   
var_dump($num4); //输出int(12)   
?>

在Python中获取字符串或者列表长度使用len(),在PHP中获取字符串长度使用strlen()。

if-else判断语句

PHP中的if-else与Python在格式上有很大的不同,首先是判断条件必须要用括号,然后如果条件为真就直接执行下面一个大括号的内容,如果不为真就是在大括号后加上else的大括号,说起来有点傻傻的,看代码吧。

<?php
header("Content-type: text/html; charset=utf-8");
$name='langzi';
echo $name;
echo '<br>';
if ($name='langzi'){
    echo 'yesyes';

}else{
    echo 'nono';
};
?>

运行结果:

langzi
yesyes

格式归纳:

if (条件)
{
 条件成立时执行的代码;
}
else
{
 条件不成立时执行的代码;
}

大致格式就是这样,这里不深入拓展,知识基础笔记,先把这些记住才是最重要的。

switch()

switch()可以根据你的条件不同执行不同的命令,这一点是Python中没有的特性,在Python中使用elif来实现。

<?php
header("Content-type: text/html; charset=utf-8");
$langzi='18';
switch ($langzi){
    case '18':
        echo 'langzi --- age --- 18';
        break;
    case '19':
        echo 'langzi --- age   ---19??';
        break;
};
?>

这里适用于那些同时需要在多个条件中选择自己需要的条件然后执行的场景,需要注意的是case+满足条件+冒号,并且执行完满足条件的语句后别忘了加上break。switch case 适合用在验证多个可能的确切值时,使用不适合用在判断范围,比如 60-80 分及格, 0-59 不及格,81-100 优 这种情况就不能用 switch case。因为case 后面只能写一个确切的值。

格式归纳

<?php
switch (n)
{
case label1:
    如果 n=label1,此处代码将执行;
    break;
case label2:
    如果 n=label2,此处代码将执行;
    break;
default:
    如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>

三元运算符

就像在Python中一样,PHP中可以用三元运算符,即一个表达式中就能把if-else逻辑判断处理。

(expr1)?(expr2):(expr3); //表达式1?表达式2:表达式3

如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”。
举个例子,有两个变量$a,$b,取其中最大的一个数“

<?php
$a=5;
$b=10;
if ($a>=$b){
    echo $a;

}else{
    echo $b;

}
?>

如果使用三元运算符

<?php
$a=5;
$b=10;
$c=($a>=$b)?$a:$b;
echo $c;
?>

isset()函数

isset函数是检测变量是否设置,如果已经设置就显示TRUE,没有就显示FALSE,关于var_dump与echo的区别看看上面我有提起过。

<?php
$user='';
var_dump(isset($user)) ;
echo '<hr>';
var_dump(isset($aaaaaaaaaa));
?>

运行结果:

bool(true)
---------------------------------------------------
bool(false)

可以在函数变量名前面加上!号,就是如果不满足这个函数条件或者不等于。

PHP 数组

PHP中的数组就是Python中的列表,使用前必须加上ARRAY(),与Python一样都可以使用索引,但是PHP中更加复杂些,甚至把Python中的字典类型也归纳在数组一起,在PHP中叫关联数组。很强啊。使用方法详细看下面:

列表形式

<?php
$list=array(1,'ZHAO','LANG');
echo $list[1];
?>

运行结果:

ZHAO

字典形式

<?php
$dic=array('name'=>'langzi','age'=>'22');
echo $dic['name'];
?>

运行结果:

langzi

迭代遍历

首先获取数值的长度使用count()函数。

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

运行结果:

Volvo
BMW
Toyota

遍历关联数组

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

运行结果:

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

数组排序

在Python中使用sorted()函数可以直接排序,PHP中使用也差不多,具体方法如下:

sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

使用方法:

<?php
$numbers=array(4,6,2,22,11);
sort($numbers);
print_r($numbers);
?>

运行结果:

Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 11 [4] => 22 )

php 循环

for 循环

基础使用

与Python有区别…感觉Python语法优雅…
打印1-29之间的数字,使用Python:

for i in range(30):print i

如果使用PHP:

<?php
for ($i=1;$i<30;$i+=1)
{
    echo $i;
    echo '<br>';
};
?>

需要注意的是括号内使用的是;并不是逗号。

格式归纳

for (初始值; 条件; 增量)
{
 要执行的代码;
}

foreach 循环

foreach循环用来循环遍历数组。

<html>
<body>

<?php
$x=array("one","two","three");
foreach ($x as $value)
{
 echo $value . "<br>";
}
?>

</body>
</html>

运行结果:

one
two
three

注意as的用法,把每个需要遍历的对象赋值给$value。

格式归纳

foreach ($array as $value)
{
 要执行代码;
}

while 循环

打印1-100的数

<?php
$i=1;
while ($i<=100){
    echo $i.'<br>';
     $i+=1;
}
?>

PHP的语法的确不太优雅….注意一定要加上分号啊!

格式归纳

while (条件)
 {
要执行的代码;
 }

do-while循环

do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

下面的实例首先设置变量 i 的值为 1 ($i=1;)。
然后,开始 do…while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行:

<?php
$i=1;
do
 {
 $i++;
 echo "The number is " . $i . "<br>";
 }
while ($i<=5);
?>

运行结果:

The number is 2
The number is 3
The number is 4
The number is 5
The number is 6

格式归纳

do
{
要执行的代码;
}
while (条件);

php 函数

基本函数

打印我的名字,记住PHP的分号一定要记得使用…

<?php
header("Content-type: text/html; charset=utf-8");
function printlangzi()
{echo 'langzi'.'<br>';}
echo 'Name:';
printlangzi();
?>

运行结果:

Name:langzi

传入参数的函数

<?php
header("Content-type: text/html; charset=utf-8");
function printlangzi($coo)
{echo $coo.'<br>';}
printlangzi('langzi')
?>

运行结果:

langzi

如果要传入两个或多个参数用法和Python差不多,不多复述。

函数返回值

就像Python的retuen一样,返回值并且跳出这个函数,作用与Python一样,so good。

<?php
function add($x,$y)
{
    $z = $x+$y;
    echo $z;
}
add(2,5);
?>

运行结果:

7

超级全局变量

就像在Python中要定义全局变量只需要在函数中使用globals + 变量名即可。在PHP中也可以这么用并且不仅仅但只有这些用法。

GLOBALS()

这个与Python中的定义全局变量方法一样。

如果不适用GLOBALS(),要实现一个函数对加法:

<?php
$x=1;
$y=2;
function add($x,$y){
    $z = $x+$y;
    echo $z;
}
add($x,$y);
?>

这一点就很像我前面的文字中关于函数作用域的内容,如果想要让变量$x,$y变成全局变量不用传入参数到函数中就可以这么做:

<?php
$x=1;
$y=2;
function add(){
    $GLOBALS['z']=$GLOBALS['x']+$GLOBALS['y'];
    echo $GLOBALS['z'];
}
add();
?>

需要留意的是,PHP中申明全局变量GLOBALS必须是大写字母,并且使用[]包围起来。

$_SERVER()

该函数可以返回服务器上的一些信息

<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

运行结果:

/PHP study5-10/PHP-base/php-super-post.php
localhost
localhost
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
/PHP study5-10/PHP-base/php-super-post.php

$_FILES

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

上传文件代码:

<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

其中各项属性:

  • $_FILES[“file”][“name”] - 被上传文件的名称
  • $_FILES[“file”][“type”] - 被上传文件的类型
  • $_FILES[“file”][“size”] - 被上传文件的大小,以字节计
  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称
  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码

$_GET/$_POST

关于这两个变量有多重要我就不解释了,来看看他们的用法。

$_POST

<html>
<body>
<form method="post">
    NAME:<input type="text" name="user">
    <br>
    <button type="submit">login</button>

</form>

<?php
$name=$_POST['user'];
echo $name;
?>
</body>
</html>

运行结果:

NAME:【一个输入框】

【登录框login】

Notice: Undefined index: user in E:\PHPSTUDY\PHPTutorial\WWW\PHP study5-10\PHP-base\php-super-post.php on line 11

在输入框中输入文字aaaa
NAME:【一个输入框】

【登录框login】
aaaaa

我懒得截图了,大概是这个意思~

首先使用$_POST()方法,在html中写一个表单,要传递的方式是POST方式。然后在html中嵌入一个PHP文件,定义变量名为$name,从表单的name=user中得到表单的名为user,于是使用$_POST(‘user’)。

关于notice是因为我之前没有定义$name这个变量所以弹出提示,不影响运行(在Python中会报错),解决办法:

<span style="font-size:18px;">  
<?php  
//禁用错误报告  
error_reporting(0);  
//报告除了警告以外的所有错误  
error_reporting(E_ALL & ~E_NOTICE);  
//报告运行时错误  
error_reporting(E_ERROR | E_WARNING | E_PARSE);  
//报告所有错误  
error_reporting(E_ALL);  
?></span>  

$_GET

<html>
<body>
<form method="get">
    page<input type="text" name="page">
    <input type="submit">
</form>
<?php
echo $_GET['page'];
?>
</body>
</html>

运行结果:

和上面的一样

在 HTML 表单中使用 method=”get” 时,所有的变量名和值都会显示在 URL 中,所以在发送密码或其他敏感信息时,不应该使用这个方法!

$_REQUEST

用于收集HTML表单提交的数据,其实就是获取表单的数据不作处理罢了。

PHP的类

与Python很相似,具体看代码:

案例一

<?php
class phpclass{
    // 定义类 与Python一样
    var $name;
    var $age;
    // 定义类中的变量
    function phone($input_name){
        // 定义类中的函数,接受一个参数
        $this->name=$input_name;
        // 然后把接受的参数变换成类中的变量
        echo $this->name;

    }

}
// 类结束
$abb = new phpclass;
// 类的对象实例化,与Python一样
$abb->phone('langzi');
//调用类的实例对象
?>

运行结果:

langzi

案例二

<?php
class phpclass{
    // 定义类 与Python一样
    var $name;
    var $age;
    // 定义类中的变量
    function phone($input_name){
        // 定义类中的函数,接受一个参数
        $this->name=$input_name;
        // 然后把接受的参数变换成类中的变量
        echo $this->name;

    }
    function rr($input_lala){
        $this->age=$input_lala;
        echo $this->age;

    }

}
// 类结束
$abb = new phpclass;
// 类的对象实例化,与Python一样
$abb->phone('langzi');
//调用类的实例对象
$abb->rr('haha');
?>

运行结果:

langzihaha

可以在echo输出语句后面加上 . PHP_EOL;,PHP_EOL;是换行符的意思。

总结

PHP的基础大概就这么多,总的来说数据类型和Python上有点区别,比如字符串拼接,还有获取长度使用的内置函数len()–strlen()不一样,打印输出略有区别,不过稍微记一下就好了。判断与循环这两块很重要,并且与Python的区别有点大,需要记牢,函数这块基本差不多,一定要注意的是PHP每次运行结束都要加上分号,还有类对象的调用,比如Python中使用random.randint,但是如果要在PHP这样用的话,格式就是random->randint,另外PHP中对比变量使用==与===都不一样,===是包括变量值与类型完全相等,而==只是比较两个数的值是否相等。╮(╯▽╰)╭~。