この記事は主に PHP 配列関数の最も基本的な知識ポイントをまとめたものです。興味のある方は参考にしてください。
配列は非常に重要なデータ型です。他のデータ型と比較すると、これは構造体に似ており、この構造体には一連の値を格納できます。配列は 1 つの変数名に多くの値を格納でき、添字を参照することで値にアクセスできます。
PHP には 3 つの配列タイプがあります:
インデックス付き配列 - 数値インデックスを持つ配列
連想配列 - 指定されたキーを持つ配列
多次元配列 - 1 つ以上の配列を含む配列
1. 配列の作成
array(key => value)
1.インデックス配列を作成します
array()関数を使用して配列を宣言します。 PHP は、比較的柔軟で便利な弱い型指定言語です。キー値は必要ありません (インデックスは 0 から始まります)。
例:
array("1" => "百度","2" => "阿里","3" => "腾讯"); 或者是不使用键值: array("百度","阿里","腾讯"); 当然也可以写成: $arr[0] = "百度"; $arr[1] = "阿里"; $arr[2] = "腾讯";
2. 連想配列を作成します
連想配列はインデックス配列と似ていますが、インデックス配列のキー名のような数値だけを指定することはできず、数値を指定することもできます。および文字列 混合形式と同様に、配列が連想配列であるかどうかを判断する基準は、配列内に数値ではないキー名があるかどうかです。いいえ、関連しています。
array("Robin Li" => "Baidu","Jack Ma" => "Alibaba","Ma Huateng" => "Tencent");
3. 多次元配列
array(array() 、array()) 2次元配列
配列の長さを取得する - count() 関数
<?php $arr = array("百度","阿里","腾讯"); echo count($arr); ?> //结果返回3(说明数组中有三个元素)
2. 配列を走査
配列内の要素の値を出力します。インデックス配列の場合は for と foreach が一般的に使用され、連想配列の場合は foreach が一般的に使用されます。 print_r() 関数を使用してループの後に結果を出力するか、var_dump() 関数を使用します。
1. インデックス配列を走査する
インデックス配列のすべての値を走査して出力するには、次のように for、foreach(array_expression as value)、foreach(arrayexpressionaskey => $value) ループを使用できます。 :
forループを使用
<?php $arr = array("百度","阿里","腾讯"); $arrlen = count($arr);//获取数组的长度 for ($i=0; $i <$arrlen ; $i++) { $data[] = $arr[$i]; } echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($data);
印刷結果は次のように表示されます:
Array
(
[0] => Baidu
[1] => Alibaba
[2] => Tencent
)
foreach ループを使用します
<?php $arr = array("百度","阿里","腾讯"); foreach ($arr as $value) { $data[] = $value; } echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($data);//打印结果和上面一样
注: データの後に配列記号 [] があります。なぜでしょうか。
2. 連想配列を走査する
連想配列のすべての値を走査して出力するには、次のように foreach (array_expression as key=>value) ループを使用できます。
印刷結果は次のようになります:
<?php $arr = array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯"); foreach ($arr as $key => $value) { $data[$key] = $value; } echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($data);
気づきましたか?この時、データ[$key]以降は何になるのでしょうか? []
数値連想配列と数値インデックス配列の代わりに、 3. 配列の要素を追加および削除します
の最初のパラメータに array_push(array, value1, value2...) 関数を追加します。配列要素の末尾 配列の末尾に 1 つ以上の要素を追加 (プッシュ) し、新しい配列の長さを返します。 この関数は、array[]=value を複数回呼び出すことと同じです。
Array ( [李彦宏] => 百度 [马云] => 阿里 [马化腾] => 腾讯 )
配列要素の先頭のインクリメント
array_unshift(array,value1,value2,value3…) 関数は、配列に新しい要素を挿入するために使用されます。新しい配列の値は配列の先頭に挿入されます。<?php $arr = array("百度","阿里","腾讯"); array_push($arr,"知乎","微博"); echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($arr); //打印结果显示: Array ( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎 [4] => 微博 )
配列要素の末尾を削除
array_pop(array) 関数は、配列の最後の要素を削除します。<?php $arr = array("百度","阿里","腾讯"); array_unshift($arr,"知乎","微博"); echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($arr); //打印结果显示: Array ( [0] => 知乎 [1] => 微博 [2] => 百度 [3] => 阿里 [4] => 腾讯 )
配列要素の先頭を削除
array_shift(array) 関数は、配列の最初の要素を削除し、削除された要素の値を返すことができます。<?php $arr = array("百度","阿里","腾讯"); array_pop($arr); echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($arr); 打印结果显示: Array ( [0] => 百度 [1] => 阿里 )
配列から重複する値を削除する
array_unique(array) 関数は、配列から重複する値を削除し、結果の配列を返します。<?php $arr = array("百度","阿里","腾讯"); array_shift($arr); echo "<pre class="brush:php;toolbar:false">"; //换行显示 print_r($arr); 打印结果显示: Array ( [0] => 阿里 [1] => 腾讯 )
配列内に存在する値を検索in_array(search,array,type)は、指定された値が配列内に存在するかどうかを確認します。 指定された値の検索が配列配列内に存在する場合は true を返します。 3 番目のパラメーターが true に設定されている場合、関数は要素が配列内に存在し、指定された値と同じデータ型を持つ場合にのみ true を返します。パラメータが配列内に見つからない場合、関数は false を返します。
<?php $arr = array("百度","阿里","腾讯","百度","微博"); $data = array_unique($arr); echo "<pre class="brush:php;toolbar:false">"; print_r($data); 打印结果显示: Array ( [0] => 百度 [1] => 阿里 [2] => 腾讯 [4] => 微博 )
条件に基づいて配列から値を削除します: array_slice(array,start,length,preserve)
start は必須です。数値。取得する要素の開始位置を指定します。 0 = 最初の要素。値が正の数に設定されている場合は、前から後ろに取得されます。
値が負の数値に設定されている場合、start の絶対値は後ろから前に取得されます。 -2 は、配列の最後から 2 番目の要素から開始することを意味します。length 可选。数值。规定被返回数组的长度。
如果该值设置为整数,则返回该数量的元素。
如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。
如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。
<?php $arr = array("百度","阿里","腾讯","知乎","微博"); $data = array_slice($arr,0,4); echo "<pre class="brush:php;toolbar:false">"; print_r($data); 打印结果显示: Array ( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎 )
array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。
<?php $arr1 = array("百度","阿里","腾讯"); $arr2 = array("知乎","微博"); array_splice($arr1,0,2,$arr2); echo "<pre class="brush:php;toolbar:false">"; print_r($arr1); 打印结果显示: Array ( [0] => 知乎 [1] => 微博 [2] => 腾讯 )
五、数组合并、拆分、比较
array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。
<?php $arr1 = array("百度","阿里","腾讯"); $arr2 = array("知乎","微博"); $data = array_merge($arr1,$arr2); echo "<pre class="brush:php;toolbar:false">"; print_r($data); 打印结果显示: Array ( [0] => 百度 [1] => 阿里 [2] => 腾讯 [3] => 知乎 [4] => 微博 )
递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并到一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方法。array_merge()会覆盖前面存在的键/值对,将其替换为当前输入数组中的键/值对,而array_merge_recursive()将两个值合并在一起,形成一个新的数组并以原有的键作为数组名。其形式为:
$arr= array('one'=>'C', 'one'=>'B'); $arr1= array('three'=>'1', 'one'=>'2'); $arr2= array_merge_recursive($arr, $arr1); echo "<pre class="brush:php;toolbar:false">"; print_r($arr2); 打印结果显示: Array ( [one] => Array ( [0] => B [1] => 2 ) [three] => 1 )
合并两个数组
array_combine()函数会生成一个新数组,这个数组由一组提交的键和对应的值组成,其形式为:
$arr= array('A', 'B'); $arr1= array('1', '2'); $arr2= array_combine($arr, $arr1); echo "<pre class="brush:php;toolbar:false">"; print_r($arr2); 打印结果显示: Array ( [A] => 1 [B] => 2 )
求数组的交集
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:
$arr= array('A', 'B', 'C', 'D'); $arr1= array('A', 'B', 'E'); $arr2= array('A', 'F', 'D'); $arr3= array_intersect($arr, $arr1, $arr2); echo "<pre class="brush:php;toolbar:false">"; print_r($arr3); 打印结果显示: Array ( [0] => A )
注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。
求关联数组的交集
array_intersect_assoc()与array_intersect()基本相同,只不过它在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才被返回到结果数组中。其形式如下:
$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array('a'=>'A', 'c'=>'B', 'E'); $arr2= array('a'=>'A', 'b'=>'F', 'd'=>'B'); $arr3= array_intersect_assoc($arr, $arr1, $arr2); echo "<pre class="brush:php;toolbar:false">"; print_r($arr3); 打印结果显示: Array ( [a] => A )
求关联数组的差集
函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键,因此,只在第一个数组中出现而不在其他输入数组中出现的键/值对才会被返回到结果数组中。其形式如下:
$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array('a'=>'A', 'b'=>'B', 'e'=>'E'); $arr3= array_diff_assoc($arr, $arr1); echo "<pre class="brush:php;toolbar:false">"; print_r($arr3); 打印结果显示: Array ( [c] => C [d] => D )
其他有用的数组函数
返回一组随机的键 array_rand()函数将返回数组中的一个或多个键。其形式为:
$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D'); $arr1= array_rand($arr, 2); echo "<pre class="brush:php;toolbar:false">"; print_r($arr1); 打印结果显示: Array ( [0] => c [1] => d ) //每次刷新显示的结果都不一样
对数组中的值求和
array_sum()函数将数组内的所有值加在一起,返回最终的和,其形式如下:
$arr= array('A', 32, 12, 'B'); $count= array_sum($arr); echo "<pre class="brush:php;toolbar:false">"; print_r($count);
打印结果显示:
44
如果数组中包含其他数据类型(例如字符串),这些值将被忽略。
划分数组
array_chunk()函数将数组分解为一个多维数组,这个多维数组由多个包含size个元素的数组所组成。其形式如下:
$arr= array('A', 'B', 'C', 'D'); $arr1= array_chunk($arr, 2); echo "<pre class="brush:php;toolbar:false">"; print_r($arr1);
打印结果显示:
Array ( [0] => Array ( [0] => A [1] => B ) [1] => Array ( [0] => C [1] => D ) )
处理数组时可调用函数有
array_filter(*array*,*callbackfunction*); array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*) array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*) array_reduce(*array*,*myfunction*,*initial*) array_walk(*array*,*myfunction*,*userdata*...) ……
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
以上がPHPの配列関数の基礎知識まとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。