php陣列及相關基礎知識經驗
php陣列創建
<?php
$arr_age1 = array(18, 20, 25);
// 或者:
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
// 空陣列:
$arr_age3 =array();
?>
也可以使用陣列控制器 [] 來創建陣列:
<?php
$arr_age1[] = 18;
$arr_age1[] = 20;
$arr_age1[] = 25;
// 或者:
$arr_age2["wang"] = 18;
$arr_age2["li"] = 20;
$arr_age2["zhang"] = 25;
?>
輸出陣列單元值
可以使用如下方式訪問輸出陣列單元值:
echo $arr_age1[0]; //輸出:18
echo $arr_age2["wang"]; //輸出:18
多維陣列
如果陣列中的值也是陣列時,我們就稱這樣的陣列為遞歸陣列或多維陣列。
例子:
<?php
$all = array( "fruits" => array( "a"=>"orange", "b"=>"banana", "c"=>"apple"),
"ages" => array( 18, 20, 25 )
);
echo $all["fruits"]["c"]; //輸出apple
echo $all["ages"][0]; //輸出18
?>
陣列與字符串轉換
PHP陣列轉字符串 implode()
<?php
$vegetables[0] = "corn";
$vegetables[1] = "broccoli";
$vegetables[2] = "zucchini";
$text = implode(",", $vegetables);
echo $text;
?>
運行結果
corn,broccoli,zucchini
PHP字符串轉陣列 explode()
<?php
$text = "corn, broccoli, zucchini";
$vegetables = explode(", ", $text);
print_r($vegetables);
?>
運行結果:
Array
(
[0] => corn
[1] => broccoli
[2] => zucchini
)
str_split()
str_split() 將字符串分割為一個陣列,成功返回一個陣列。
陣列遍歷
foreach()
PHP foreach() 語法結構用於遍歷操作或輸出陣列,foreach() 僅能用於遍曆陣列或對象,當試圖將其用於其它數據類型或者一個未初始化的變量時會產生錯誤。
實例:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
echo $age,',';
}
?>
結果輸出
18,20,25
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
echo $key,': ',$age,';';
}
?>
結果輸出
wang:18;li:20;zhang:25;
foreach 所操作的是指定陣列的一個拷貝,而不是該陣列本身。對返回的陣列單元的修改也不會影響原陣列(見下面例子),但 foreach 循環運行到結束,原陣列的內部指針將指向陣列的結尾。
要在 foreach 中修改原陣列元素,可以通過引用來實現,將上面的例子更改為:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
$age = $age+10;
echo $age,'<br />';
}
// 輸出原陣列
print_r($arr_age);
?>
結果輸出
18
20
25
Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
遍歷多維陣列
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小張", "age"=>25));
foreach ($arr_age as $age) {
if(is_array($age)){
foreach ( $age as $detail) {
echo $detail,'<br />';
}
} else {
echo $age,'<br />';
}
}
?>
輸出結果:
18
20
小張
25
for() 循環遍曆陣列
如果是操作連續鍵值的陣列,也可以採用 for() 循環來遍曆陣列:
<?php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
echo $arr_age[$i]."<br />";
}
?>
運行例子輸出如下:
18
20
25
JSON轉換為php
1.json_decode()
json_decode ( string $json [, bool $assoc ] )
接受一個 JSON 格式的字符串並且把它轉換為 PHP 變量
實例:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
輸出結果:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
json_decode($data)輸出的是對象,而json_decode("$arr",true)是把它強制生成PHP關聯陣列.
2.json_encode()
對變量進行 JSON 編碼 實例:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
輸出:
{"a":1,"b":2,"c":3,"d":4,"e":5}
可以看出json_encode()和json_decode()是編譯和反編譯過程,注意json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。
php隨機數
mt_rand(min,max)
如果沒有提供可選參數 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之間的偽隨機數。例如想要 5 到 15(包括 5 和 15)之間的隨機數,用 mt_rand(5, 15)。
php正則表達式
1.判斷郵箱地址
<?php
function is_email($email){
return strlen($email) > 6 && preg_match("/^[/w/-/.]+@[/w/-]+(/./w+)+$/", $email);
}
?>
2. 判斷Url:
function is_url($str){
return preg_match("/^http:////[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/』:+!]*([^<>/"])*$/", $str);
}
<?php
$arr_age1 = array(18, 20, 25);
// 或者:
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
// 空陣列:
$arr_age3 =array();
?>
也可以使用陣列控制器 [] 來創建陣列:
<?php
$arr_age1[] = 18;
$arr_age1[] = 20;
$arr_age1[] = 25;
// 或者:
$arr_age2["wang"] = 18;
$arr_age2["li"] = 20;
$arr_age2["zhang"] = 25;
?>
輸出陣列單元值
可以使用如下方式訪問輸出陣列單元值:
echo $arr_age1[0]; //輸出:18
echo $arr_age2["wang"]; //輸出:18
多維陣列
如果陣列中的值也是陣列時,我們就稱這樣的陣列為遞歸陣列或多維陣列。
例子:
<?php
$all = array( "fruits" => array( "a"=>"orange", "b"=>"banana", "c"=>"apple"),
"ages" => array( 18, 20, 25 )
);
echo $all["fruits"]["c"]; //輸出apple
echo $all["ages"][0]; //輸出18
?>
陣列與字符串轉換
PHP陣列轉字符串 implode()
<?php
$vegetables[0] = "corn";
$vegetables[1] = "broccoli";
$vegetables[2] = "zucchini";
$text = implode(",", $vegetables);
echo $text;
?>
運行結果
corn,broccoli,zucchini
PHP字符串轉陣列 explode()
<?php
$text = "corn, broccoli, zucchini";
$vegetables = explode(", ", $text);
print_r($vegetables);
?>
運行結果:
Array
(
[0] => corn
[1] => broccoli
[2] => zucchini
)
str_split()
str_split() 將字符串分割為一個陣列,成功返回一個陣列。
陣列遍歷
foreach()
PHP foreach() 語法結構用於遍歷操作或輸出陣列,foreach() 僅能用於遍曆陣列或對象,當試圖將其用於其它數據類型或者一個未初始化的變量時會產生錯誤。
實例:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
echo $age,',';
}
?>
結果輸出
18,20,25
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
echo $key,': ',$age,';';
}
?>
結果輸出
wang:18;li:20;zhang:25;
foreach 所操作的是指定陣列的一個拷貝,而不是該陣列本身。對返回的陣列單元的修改也不會影響原陣列(見下面例子),但 foreach 循環運行到結束,原陣列的內部指針將指向陣列的結尾。
要在 foreach 中修改原陣列元素,可以通過引用來實現,將上面的例子更改為:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
$age = $age+10;
echo $age,'<br />';
}
// 輸出原陣列
print_r($arr_age);
?>
結果輸出
18
20
25
Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
遍歷多維陣列
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小張", "age"=>25));
foreach ($arr_age as $age) {
if(is_array($age)){
foreach ( $age as $detail) {
echo $detail,'<br />';
}
} else {
echo $age,'<br />';
}
}
?>
輸出結果:
18
20
小張
25
for() 循環遍曆陣列
如果是操作連續鍵值的陣列,也可以採用 for() 循環來遍曆陣列:
<?php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
echo $arr_age[$i]."<br />";
}
?>
運行例子輸出如下:
18
20
25
JSON轉換為php
1.json_decode()
json_decode ( string $json [, bool $assoc ] )
接受一個 JSON 格式的字符串並且把它轉換為 PHP 變量
實例:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
輸出結果:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
json_decode($data)輸出的是對象,而json_decode("$arr",true)是把它強制生成PHP關聯陣列.
2.json_encode()
對變量進行 JSON 編碼 實例:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
輸出:
{"a":1,"b":2,"c":3,"d":4,"e":5}
可以看出json_encode()和json_decode()是編譯和反編譯過程,注意json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。
php隨機數
mt_rand(min,max)
如果沒有提供可選參數 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之間的偽隨機數。例如想要 5 到 15(包括 5 和 15)之間的隨機數,用 mt_rand(5, 15)。
php正則表達式
1.判斷郵箱地址
<?php
function is_email($email){
return strlen($email) > 6 && preg_match("/^[/w/-/.]+@[/w/-]+(/./w+)+$/", $email);
}
?>
2. 判斷Url:
function is_url($str){
return preg_match("/^http:////[A-Za-z0-9]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/』:+!]*([^<>/"])*$/", $str);
}
留言
張貼留言