詳しくはphp(六)配列
13921 ワード
一、配列の概要
1.1配列は複合型
1.2配列に任意の長さのデータを格納してもよいし、任意の種類のデータを格納してもよい
二、配列のタイプ
2.1索引配列:下付きは索引として順次整数
2.2関連配列:インデックスとして文字列が下付き
三、配列の多種の宣言方式
3.1配列要素に直接値を割り当てる
a.インデックスの下付き文字が値を与えない場合、0から順にインデックスb.インデックスの下付き文字が与えられると、次は最大から1増加する
c.後に前の下付き文字が現れた場合、賦値が前の要素にd.混合宣言を再賦値した場合、インデックスと関連付けは相互に影響しない(インデックスの下付き文字の宣言に影響しない)
3.2 array()関数の使用
a.デフォルトはインデックス配列
b.関連配列と索引配列に下付き文字を指定する場合は、キー=>値c.複数のメンバーを使用する前に","分割
重要なポイント:2 D配列2 Dはいれつ
四、配列の遍歴
4.1 for文ループを使用する(推奨しない)
制限:配列はインデックス配列でなければなりません.また、下付きは連続でなければなりません(ただし、インデックス配列の下付きは不連続であり、配列は関連配列である可能性があります).
4.2 foreach文を使用したループ(強く推奨)
ループ回数は配列の要素の個数によって決定され、ループごとに配列内の要素が後の変数にそれぞれ割り当てられます.
4.3 while(),list(),each()の組合せループを使用する(推奨しない)
each()関数:
*パラメータとして配列が必要
*返されるのも配列です
*返された配列は0,1,key,valueの4つの下付き文字で、0とkeyの下付き文字は現在の配列要素のキーで、1とvalueの下付き文字は現在の配列要素の値です
*デフォルトの現在の要素が最初の要素です
*1回実行するたびに現在の要素が後方に移動します.
*最後にこの関数を実行した場合はfalseを返します.
List()関数:
* list()=array(); この関数に配列を割り当てる必要があります
*配列内の要素の数はlist()関数のパラメータの数と同じです*配列内の各要素の値はlist()関数の各パラメータに割り当てられ、list()は各パラメータを変数に変換します
*list()はインデックス配列のみ受信できます
五、事前定義配列
自動グローバル変数--スーパーグローバル配列1.WEBサーバ,クライアント,実行環境,ユーザから入力データが含まれている.事前定義配列は、グローバル範囲で自動的に有効になります.例えば、globalを宣言することなく、関数でこれらの配列を使用することもできます.ユーザーはこれらの配列をカスタマイズできませんが、これらのデータ操作は私たちがカスタマイズした配列操作と同じです.
* $_GET//URLリクエストを介してスクリプトにコミットされる変数*$POST//HTTP POSTメソッドを介してスクリプトにコミットされる変数*$REQUEST//GET、POST、COOKIEメカニズムを介してスクリプトの変数にコミットされるため、この配列は信頼できず、できるだけ*$_を使用しないFILES//HTTP POSTファイルを介してスクリプトにコミットされる変数*$COOKIE // * $_SESSION // * $_ENV//実行環境スクリプトにコミットされた変数*$SERVER//変数はWEBサーバで設定されているか、現在のスクリプトの実行環境に直接関連付けられている*$GLOBALS//現在のスクリプトで有効な変数がすべてここにある限り、配列キー名はグローバル変数の名前です
六、配列相関関数
1.配列キー/値操作に関する関数*1.1 array_values()は、
* 1.2 array_keys()は配列内のすべてのキー名を返します
* 1.3 in_Array()配列に値があるかどうかをチェック
* 1.4 array_key_existsは、与えられた
* 1.5 array_flip交換配列のキーと値
* 1.
6 array_reverseは、セルの順序が逆の配列を返します.
2.統計配列要素の個数と一意性
* 2.
1 count() sizeof();
* 2.
2 array_count_values統計配列内のすべての値が現れる回数
* 2.
3 array_Unique配列から重複する値を除去する
3.コールバック関数を使用して配列の関数を処理する
* 3.1 array_フィルタ()配列内のセルをコールバック関数でフィルタする
* 3.2 array_walk()ユーザカスタム関数を使用して配列内の各要素をコールバック処理する
* 3.3 array_map()コールバック関数を所与の配列のセルに作用させる
4.配列のソート関数*4.1 sort()rsort()簡単な配列ソート
ksort()krsort()キー名に基づいて配列をソート
asort()arsort()要素の値に基づいて配列をソート
natsort()natcasesort()自然数ソート法に従って配列をソート
usort()uasort()uksort()ユーザカスタムルールに従って配列をソート
array_Multisortは一度に複数の配列を並べ替えます
5.分割、結合、分割、結合の配列関数*5.1 array_slice()配列から*5.2 array_を取り出しますsplice()配列の一部を除去し、*5.3 array_の代わりに他の値を使用します.combine()は、1つの配列の値をキー名、別の配列の値を値*5.4 array_とする配列を作成します.merge()1つ以上の配列をマージ*5.5 array_intersect()計算配列の交差*5.6 array_diff()は配列の差セット6を計算する.配列とデータ構造の関数*6.1 array_push() array_pop()データ実装スタック*6.2 array_unshift() array_shift()unset()使用キュー7.その他のデータ操作に関する関数*7.1 array_rand()配列から1つ以上のセルをランダムに取り出す*7.2 shuffle()配列を乱す*7.3 array_sum()計算配列内のすべての値の和*7.4 range()指定範囲単位を含む配列を確立する
1.1配列は複合型
1.2配列に任意の長さのデータを格納してもよいし、任意の種類のデータを格納してもよい
二、配列のタイプ
2.1索引配列:下付きは索引として順次整数
<?php
$user[0] = 1;
$user[1] = "zhangsan";
$user[2] = "[email protected]";
echo '<pre>';
print_r($user);
echo '</pre>';
?>
2.2関連配列:インデックスとして文字列が下付き
<?php
$user["id"] = 1;
$user["name"] = "zhangsan";
$user["email"] = "[email protected]";
echo '<pre>';
print_r($user);
echo '</pre>';
$user["name"] = "lisi";
echo $user["name"];
?>
三、配列の多種の宣言方式
3.1配列要素に直接値を割り当てる
a.インデックスの下付き文字が値を与えない場合、0から順にインデックスb.インデックスの下付き文字が与えられると、次は最大から1増加する
c.後に前の下付き文字が現れた場合、賦値が前の要素にd.混合宣言を再賦値した場合、インデックスと関連付けは相互に影響しない(インデックスの下付き文字の宣言に影響しない)
3.2 array()関数の使用
a.デフォルトはインデックス配列
b.関連配列と索引配列に下付き文字を指定する場合は、キー=>値c.複数のメンバーを使用する前に","分割
<?php
$user1 = array (1, "zhsangsan", 10, "nan", "[email protected]");
echo '<pre>';
print_r($user1);
echo '</pre>';
/**
Array(
[0] => 1
[1] => zhsangsan
[2] => 10
[3] => nan
[4] => [email protected]
)
*/
$user2 = array("id"=>1, "name"=>"zhsangsan", "age"=>10, 100=>"nan", "[email protected]");
echo '<pre>';
print_r($user2);
echo '</pre>';
/**
Array(
[id] => 1
[name] => zhsangsan
[age] => 10
[100] => nan
[101] => [email protected]
)
*/
?>
重要なポイント:2 D配列2 Dはいれつ
<?php
$info=array(
"user"=>array(
array(1, "zansan", 10, "nan"),
array(2, "lisi", 20, "nv")
)
);
echo $info["user"][1][1]; // lisi
echo '<pre>';
print_r($info);
echo '</pre>';
/**
Array
(
[user] => Array
(
[0] => Array
(
[0] => 1
[1] => zansan
[2] => 10
[3] => nan
)
[1] => Array
(
[0] => 2
[1] => lisi
[2] => 20
[3] => nv
)
)
)
*/
?>
四、配列の遍歴
4.1 for文ループを使用する(推奨しない)
制限:配列はインデックス配列でなければなりません.また、下付きは連続でなければなりません(ただし、インデックス配列の下付きは不連続であり、配列は関連配列である可能性があります).
<?php
$user = array(1, "zhasna", "[email protected]");
for($i = 0; $i < count($user); $i++){
echo "\$user[{$i}]=".$user[$i]."<br>";
}
/**
$user[0]=1
$user[1]=zhasna
$user[2][email protected]
*/
?>
4.2 foreach文を使用したループ(強く推奨)
ループ回数は配列の要素の個数によって決定され、ループごとに配列内の要素が後の変数にそれぞれ割り当てられます.
<?php
$user=array(1, "name"=>"zhasna", "age"=>40, 100=>"nan", "[email protected]");
foreach($user as $key => $val){ // $var , $key
echo $key." =====> ".$val."<br>";
}
/*
0 =====> 1
name =====> zhasna
age =====> 40
100 =====> nan
101 =====> [email protected]
*/
foreach($user as $val){ // key , $user
echo $val."<br>";
}
/*
1
zhasna
40
nan
[email protected]
*/
?>
4.3 while(),list(),each()の組合せループを使用する(推奨しない)
each()関数:
*パラメータとして配列が必要
*返されるのも配列です
*返された配列は0,1,key,valueの4つの下付き文字で、0とkeyの下付き文字は現在の配列要素のキーで、1とvalueの下付き文字は現在の配列要素の値です
*デフォルトの現在の要素が最初の要素です
*1回実行するたびに現在の要素が後方に移動します.
*最後にこの関数を実行した場合はfalseを返します.
<?php
$user = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while($arr = each($user)){
// echo $arr[0]."==>".$arr[1]."<br>";
echo $arr["key"]." ----> ".$arr["value"]."<br>";
}
/**
id ----> 1
name ----> zhangsan
age ----> 10
sex ----> nan
*/
?>
List()関数:
* list()=array(); この関数に配列を割り当てる必要があります
*配列内の要素の数はlist()関数のパラメータの数と同じです*配列内の各要素の値はlist()関数の各パラメータに割り当てられ、list()は各パラメータを変数に変換します
*list()はインデックス配列のみ受信できます
<?php
list($name, $age, $sex) = array("zansan", 10, "nnnnn");
echo $name."<br>";
echo $age."<br>"; // list
echo $sex."<br>"; // name , list(, $age, $sex)
/*
zansan
10
nnnnn
*/
$user1 = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
list($key, $value) = each($user1); // Array ( [1] => 1 [0] => id )
echo $key." --> ".$value;
/*
id --> 1
*/
$user2 = array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while(list($key, $value) = each($user2)){
echo $key." ==> ".$value."<br>";
}
/*
name ==> zhangsan
age ==> 10
sex ==> nan
*/
?>
五、事前定義配列
自動グローバル変数--スーパーグローバル配列1.WEBサーバ,クライアント,実行環境,ユーザから入力データが含まれている.事前定義配列は、グローバル範囲で自動的に有効になります.例えば、globalを宣言することなく、関数でこれらの配列を使用することもできます.ユーザーはこれらの配列をカスタマイズできませんが、これらのデータ操作は私たちがカスタマイズした配列操作と同じです.
* $_GET//URLリクエストを介してスクリプトにコミットされる変数*$POST//HTTP POSTメソッドを介してスクリプトにコミットされる変数*$REQUEST//GET、POST、COOKIEメカニズムを介してスクリプトの変数にコミットされるため、この配列は信頼できず、できるだけ*$_を使用しないFILES//HTTP POSTファイルを介してスクリプトにコミットされる変数*$COOKIE // * $_SESSION // * $_ENV//実行環境スクリプトにコミットされた変数*$SERVER//変数はWEBサーバで設定されているか、現在のスクリプトの実行環境に直接関連付けられている*$GLOBALS//現在のスクリプトで有効な変数がすべてここにある限り、配列キー名はグローバル変数の名前です
<?php
print_r($_GET);
echo $_GET["username"]."<br>"; // get url username
print_r($_POST);
echo $_POST["uname"]."<br>"; // post uname
print_r($_REQUEST);
echo $_ENV["OS"]."<br>"; // key 'OS' value
echo $_SERVER["DOCUMENT_ROOT"]."<br>"; // key 'DOCUMENT_ROOT' value
$a = 100; // $GLOBALS
function demo(){
echo $GLOBALS["a"]."<br>"; // global
}
demo();
?>
<form action="demo.php" method="post"> <!-- post , $_POST -->
username: <input type="text" name="uname"><br>
password: <input type="password" name="pass"><br>
<input type="submit" value="login"> <br>
</form>
<a href="demo.php?username=zhangsan">this is a $_GET test</a> <!-- get , $_GET -->
六、配列相関関数
1.配列キー/値操作に関する関数*1.1 array_values()は、
input
配列のすべての値を返し、数値インデックスを確立します.<?php
$array = array (
"size" => "XL",
"color" => "gold"
);
print_r(array_values($array));
/*
Array
(
[0] => XL
[1] => gold
)
*/
?>
* 1.2 array_keys()は配列内のすべてのキー名を返します
<?php
$array = array (
0 => 100,
"color" => "red"
);
print_r(array_keys($array));
/*
Array(
[0] => 0
[1] => color
)
*/
?>
* 1.3 in_Array()配列に値があるかどうかをチェック
<?php
$os = array ("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>
* 1.4 array_key_existsは、与えられた
key
が配列中に存在する場合にTRUE
を返す<?php
$search_array = array (
'first' => 1,
'second' => 4
);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array";
}
?>
* 1.5 array_flip交換配列のキーと値
<?php
$trans = array (
"a" => 1,
"b" => 1,
"c" => 2
);
$trans = array_flip($trans);
print_r($trans); // Array ( [1] => b [2] => c )
// , ,
?>
* 1.
6 array_reverseは、セルの順序が逆の配列を返します.
<?php
$input = array (
"php",
4.0,
array (
"green",
"red"
)
);
$result = array_reverse($input);
print_r($result);
// Array ( [0] => Array ( [0] => green [1] => red ) [1] => 4 [2] => php )
?>
2.統計配列要素の個数と一意性
* 2.
1 count() sizeof();
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
print_r($result); // 3
?>
* 2.
2 array_count_values統計配列内のすべての値が現れる回数
<?php
$array = array (
1,
"hello",
1,
"world",
"hello"
);
echo "<pre>";
print_r(array_count_values($array));
echo "</pre>";
/*
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
*/
* 2.
3 array_Unique配列から重複する値を除去する
<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique ($input);
echo "<pre>";
print_r($result);
echo "</pre>";
/*
Array
(
[a] => green
[0] => red
[1] => blue
)
*/
?>
3.コールバック関数を使用して配列の関数を処理する
* 3.1 array_フィルタ()配列内のセルをコールバック関数でフィルタする
<?php
function odd($var) {
// returns whether the input integer is odd
return ($var & 1);
}
$array = array (
"a" => 1,
"b" => 2,
"c" => 3
);
echo "<pre>";
print_r(array_filter($array, "odd"));
echo "</pre>";
/*
Array
(
[a] => 1
[c] => 3
)
*/
?>
* 3.2 array_walk()ユーザカスタム関数を使用して配列内の各要素をコールバック処理する
<?php
$fruits = array (
"d" => "lemon",
"a" => "orange",
"b" => "banana",
"c" => "apple"
);
// funcname 。array , 。
function test_print($item, $key) {
echo " $key => $item <br />
";
}
array_walk($fruits, 'test_print');
/*
d => lemon
a => orange
b => banana
c => apple
*/
?>
* 3.3 array_map()コールバック関数を所与の配列のセルに作用させる
<?php
function cube($n){
return($n * $n * $n);
}
$a = array(1, 2, 3, 4, 5);
$b = array_map ("cube", $a);
print_r($b);
// Array ([0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125)
?>
4.配列のソート関数*4.1 sort()rsort()簡単な配列ソート
<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "<br>";
}
/*
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
*/
?>
* 4.2 ksort()krsort()キー名に基づいて配列をソート
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
ksort($fruits);
foreach ($fruits as $key => $val){
echo "$key = $val <br>";
}
/*
a = orange
b = banana
c = apple
d = lemon
*/
?>
* 4.3 asort()arsort()要素の値に基づいて配列をソート
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val){
echo "$key = $val <br>";
}
/*
c = apple
b = banana
d = lemon
a = orange
*/
?>
* 4.4 natsort()natcasesort()自然数ソート法に従って配列をソート
<?php
$array = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array);
echo "<pre>";
print_r($array);
echo "</pre>";
/*
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
*/
?>
* 4.5 usort()uasort()uksort()ユーザカスタムルールに従って配列をソート
<?php
function cmp($a, $b){
if($a == $b){
return 0;
}
return ($a < $b) ? - 1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a , "cmp");
foreach ($a as $key => $value) {
echo "$key : $value <br>" ;
}
/*
0 : 1
1 : 2
2 : 3
3 : 5
4 : 6
*/
?>
* 4.6 array_Multisortは一度に複数の配列を並べ替えます
5.分割、結合、分割、結合の配列関数*5.1 array_slice()配列から*5.2 array_を取り出しますsplice()配列の一部を除去し、*5.3 array_の代わりに他の値を使用します.combine()は、1つの配列の値をキー名、別の配列の値を値*5.4 array_とする配列を作成します.merge()1つ以上の配列をマージ*5.5 array_intersect()計算配列の交差*5.6 array_diff()は配列の差セット6を計算する.配列とデータ構造の関数*6.1 array_push() array_pop()データ実装スタック*6.2 array_unshift() array_shift()unset()使用キュー7.その他のデータ操作に関する関数*7.1 array_rand()配列から1つ以上のセルをランダムに取り出す*7.2 shuffle()配列を乱す*7.3 array_sum()計算配列内のすべての値の和*7.4 range()指定範囲単位を含む配列を確立する