[CyberSecurityLearning 47] PHP配列

目次

アレイ

配列内の要素:

配列には、配列(多次元配列/ 2次元配列)を含めることもできます。

配列分類

アレイの作成

配列を作成する最初の方法

配列を作成する2番目の方法

配列要素へのアクセス

アレイトラバーサル

インデックス配列トラバーサル(forループ)

連想配列トラバーサル(foreach)

事前定義されたスーパーグローバル配列変数(重要!)

$ _GET(getメソッドによって渡されたパラメーターを受け取るために使用されます)★

練習:簡単なログインページを書く

get.phpコード:

login.phpコード:

isset関数

$ _POST(★)

login.phpコード

post.phpコード

$ _POSTアップロードファイル(★)


アレイ

変数のタイプです(基本的な変数タイプで
はありません)は、複合データ型の
キーと値のペアです(キー名キーキー値値)


配列内の要素:

(オブジェクトに加えて、任意のデータ型のデータを格納できます!)配列も配列に格納できます

<?php
$name="AJEST";
$age=24;
$sex=true;
$grade=78.9;
//把上面四个变量放到同一个变量里面去
$stu[]="AJEST";//[]实际上是一个运算符
$stu[]=24;
$stu[]=true;
$stu[]=78.9;
//echo $stu; echo只能输出简单的数据类型
echo "<pre>";//pre标签格式化输出
//print_r($stu);//print_r是输出一个数组
var_dump($stu);
?>

 

配列には、配列(多次元配列/ 2次元配列)を含めることもできます。

<?php
$students=array(
	1901 => array("AJEST",24,true,79.9),
	1902 => array("MDM",23,false,61),
	1903 => array("XL",25,true,59.9)
);
print_r($students);
//想取得第一个学生的成绩
echo $students[1901][3];
?>

 

<html>
	<title>学生基本信息表</title>
	<meta charset="utf-8">
</html>
 
<?php
$students=array(
	1901 => array(
	'name' => "GGG",
	'age' => 24,
	'esx' => true,
	'grade' => 79.9
	),
	1902 => array("MDM",23,false,61),
	1903 => array("XL",25,true,59.9)
);
echo "<table border=3>";
echo "<tr>
	<td>姓名</td>
	<td>年龄</td>
	<td>性别</td>
	<td>成绩</td>
</tr>";
 
foreach($students as $v){
	echo "<tr>";
	foreach($v as $vv){
		if($vv === true){
			$vv = "男";
		}
		if($vv === false){
			$vv = "女";
		}
		echo "<td>".$vv."</td>";
	}
	echo "</tr>";
}
echo "</table>";
?>

 

配列分類

キーと値のペア、正の整数は、インデックス配列と呼ばれます

セマンティック文字列を持つキーと値のペアは、連想配列と呼ばれます

 

アレイの作成

配列を作成する最初の方法

$ stu []

1.キー名が指定されていない場合は、配列に値を割り当てると、キー名が大きいものから数え始め、順番に増えていきます。

2.手動でキー名を付けることができます

<?php
$stu[10]="AJEST";//[]实际上是一个运算符
$stu[20]=24;
$stu[30]=true;
$stu[]=78.9;
echo "<pre>";//pre标签格式化输出
var_dump($stu);
?>

<?php
$stu['name']="AJEST";//[]实际上是一个运算符
$stu['age']=24;
$stu['sex']=true;
$stu['grade']=78.9;
$stu[]="Content";
echo "<pre>";//pre标签格式化输出
//print_r($stu);//print_r是输出一个数组
var_dump($stu);
?>

配列を作成する2番目の方法

アレイ()

<pre>
<?php
$stu1=array("AJEST",24,true,78.9);//[]实际上是一个运算符
print_r($stu1);
$stu2=array(
	'name' => "MDM",
	'age' => "23",
	'sex' => false,
	'grade' =>99.9,
	'Something like this!'
);
print_r($stu2);
?>

 

配列要素へのアクセス

1.読む

2.追加(指定されたキー名がすでに存在する場合は、配列に元のキー名を指定しないでください)。

3.変更

<pre>
<?php
$stu1=array("AJEST",24,true,78.9);//[]实际上是一个运算符
print_r($stu1);
$stu2=array(
	'name' => "MDM",
	'age' => "23",
	'sex' => false,
	'grade' =>99.9,
	'Something like this!'
);

echo $stu1[0];//AJEST  查询名字
$stu1[3]=100;//成绩改成100
print_r($stu1);

?>

アレイトラバーサル

forループは、定期的にインデックスが付けられた配列にのみ適しています

foreach言語構造

インデックス配列トラバーサル(forループ)

 

<?php
$stu1=array("AJEST",24,true,78.9);
//count()--计算数组中的单元数目,或对象中属性的个数
for($i=0;$i<count($stu1);$i++)
{
	echo $stu1[$i]."<br/>";  //中括号是运算符
}
?>

連想配列トラバーサル(foreach)

<?php
$stu1=array(
	'name'=>"MDM",
	'age'=>"23",
	'sex'=>false,
	'grade'=>99.9,
	'something like this!'
);
//foreach就是用来遍历数组的,foreach循环每执行一次就访问键值对(foreash有个自己的计数器,编程者不可见)智能
//数组中有多少个键值对,它就会循环几次
foreach($stu1 as $key=>$value){  //as就相当于把数组作拆分,$key这个变量名是自己定的,这是一种语言结构
	echo $key." => ".$value."<br/>";
}
?>

Foreachは私たちの最も重要な言語構造であり、最も重要です!

事前定義されたスーパーグローバル配列変数(重要!)

phpが定義されているので、直接使用できます。
関数内部または外部で使用できます。

    $ GLOBALS

    グローバルスコープで使用できるグローバル変数を参照してください

    $ _SERVER   

    ヘッダー、パス、スクリプトの場所などの情報を含む配列

    $ _GET(URLによって渡されたパラメーターを受け取るために使用されます)

    URLパラメータを介して現在のスクリプトに渡される変数の配列

    $ _POST   

    HTTPPOSTリクエストのContent-Typeがapplication / x-www-form-urlencodedまたはmultipart / form-dataの場合、変数は連想配列として現在のスクリプトに渡されます。

    $ _FILES

    HTTPPOSTを介して現在のスクリプトにアップロードされたアイテムの配列

    $ _COOKIE

    HTTPCookieを介して現在のスクリプトに渡される変数の配列

    $ _SESSION

    現在のスクリプトで使用可能なSESSION変数の配列

    $ _REQUEST

    デフォルトでは、$ _ GET、$ _ POST、および$ _COOKIEの配列が含まれています

    $ _ENV

    環境を介して現在のスクリプトに渡される変数の配列

$ _GET(getメソッドによって渡されたパラメーターを受け取るために使用されます)★

<?php
var_dump($_GET);
?>

渡されたパラメータをURLから受け入れます

http://localhost/PHP/array/get.php?name = GGG(getを介してパラメーターを渡すにはどうすればよいですか?このスクリプトの後に疑問符追加する必要があります

http://192.168.1.132/PHP/array/get.php?name=GGG&passwd=123456(2つのパラメーターを渡すには、&を使用して接続する必要があります)

パラメータの名前がキー名になります

パラメータの値がキー値になります

練習:簡単なログインページを書く

get.phpコード:

<meta charset="utf-8">
<?php
//是否点击登录按钮
if(isset($_GET['userSubmit'])){
	if(isset($_GET['userName']) && $_GET['userName']=="AJEST"
	&& isset($_GET['userPass']) && $_GET['userPass']=="123456"
	){
		echo "welcome,".$_GET['userName'];
	}else{
		echo "用户名或者密码错误<a href='./login.html'>请重新登录</a>";
	}
}else{
	echo "登录错误,请重新登录<a href='./login.html'>请通过表单重新登录</a>";
}
?>

login.phpコード:

<html>
<meta charset="utf-8">
<h1>用户登录</h1>
# action是提交到哪个页面(提交到当前路径下的get.php),提交方式是GET,target="_blank"就是在新标签页打开
<form action="./get.php" method="get" target="_blank">  
用户名:<input type="text" name="userName"><br />
密码:<input type="password" name="userPass"><br />
<input type="submit" name="userSubmit" value="登录">
</form>
</html>

GET配列を使用してフォーム送信を受信すると、タグのname属性値がget配列のキーとして使用され、タグの値がget配列のキーになります。

isset関数

<?php
var_dump(isset($_GET));//isset是判断变量是否被定义isset,并且非 null
var_dump(isset($_GET['name']));

?>

$ _POST(★)

HTTPPOSTリクエストのContent-Typeがapplication / x-www-form-urlencodedまたはmultipart / form-data(file)の場合、変数は連想配列として現在のスクリプトに渡されます。

GETデータはURLにあり、POSTデータはHTTP要求メッセージの要求本文にあります

郵便で渡されたパラメータを受け取る

<?php
var_dump($_POST);
?>

login.phpコード

enctypeが書き込まれていない場合、デフォルトはapplication / x-www-form-urlencodedで
あり、multipart / form-dataはファイルです。

<html>
<meta charset="utf-8">
<h1>用户登录</h1>
<form action="./post.php" method="post" target="_blank" enctype="">  
用户名:<input type="text" name="userName"><br />
密码:<input type="password" name="userPass"><br />
<input type="submit" name="userSubmit" value="登录">
</form>
</html>

post.phpコード

<pre>
<meta charset="utf-8">
<?php
//var_dump($_POST);
if(isset($_POST['userSubmit'])){
	if(isset($_POST['userName']) && $_POST['userName']=="GGG"
	&& isset($_POST['userPass']) && $_POST['userPass']=="123456"
	){
		echo "Welcome,".$_POST['userName'];
	}else{
		echo "用户名或密码错误<a href='./login.html'>请通过重新登录</a>";
	}
}else{
	echo "Error!<a href='./login.html'>请通过表单登录</a>";
}
?>

$ _POSTアップロードファイル(★)

$ _FILES    は、HTTPPOSTを介して現在のスクリプトにアップロードされたアイテムの配列です。

アップロードファイルサイズの上限については、php.ini設定ファイルを変更する必要があります(ここをスキップ)

php.ini構成ファイルを変更します

ファイルをC:\ phpStudy \ tmp \ tmpにアップロードした後、キャッシュの場所を変更します

C:\ phpStudy \ tmp \ tmpは、phpアップロードファイルのパスを変更するためのものです

phpStudyを再起動します(構成ファイルを有効にします)

upfile.php:

<html>
<meta charset="utf-8">
<h1>
	文件上传测试
</h1>
<form
	action=""
	method="post"
	enctype="multipart/form-data"
>
	<input type="file" name="userUpFile">
	<input type="submit" name="userSubmit" value="上传">
</form>
</html>
<hr />
<?php
echo "<pre>";
if(isset($_POST['userSubmit'])){  //用户是否点击提交按钮
	var_dump($_FILES);   //$_FILES捕获文件上传信息
	$tmp_path=$_FILES['userUpFile']['tmp_name'];
	$path=__DIR__."\\".$_FILES['userUpFile']['name'];//__DIR__获取当前php脚本所在目录
	//echo $path;
	if(move_uploaded_file($tmp_path,$path)){ //把缓存文件移动到目标文件(缓存文件如果不移动会瞬间消失,要利用sleep函数才能看到)
	//move_uploaded_file(参数1,参数2);将上传上来的缓存文件的目录(参数1)保存到参数2目录下
		echo "upfile success!";
		echo "<br />".$_FILES['userUpFile']['name'];
	}else{
		echo "upfile failed";
	}
}
?>

 

 

おすすめ

転載: blog.csdn.net/Waffle666/article/details/115030506