ながらく放置してました・・・
PHPを久々にやったんですが、やっぱり配列の関数・ライブラリが充実している分、作業がサクサクすすみますね。配列の操作でいろいろと学ぶところがあったんで掲載します。
Contents
PHP配列頻出関数
配列の操作で頻度が多いものを掲載しようと思います。つってもそんなないですが・・・
受験同様頻度の多いものを繰り返し使いますね。
array_push
配列系で一番最初に覚えた多次元配列に連想配列などを入れるときに使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php $arr=array( array("name"=>"matsumoto","age"=>30), array("name"=>"suzuki","age"=>35) ); $arr2= array("name"=>"saitou","age"=>40); array_push( $arr,$arr2); //ちなみに$arr[]=$arr2;もおなじ使い方 //array(3) { // [0]=> // array(2) { // ["name"]=> // string(9) "matsumoto" // ["age"]=> // int(30) // } // [1]=> // array(2) { // ["name"]=> // string(6) "suzuki" // ["age"]=> // int(35) // } // [2]=> // array(2) { // ["name"]=> // string(6) "saitou" // ["age"]=> // int(40) // } //} |
in_array
1つの変数が、配列の中にあるかのチェック。
ただし配列の要素数が大きくなると遅いようです。
1 2 3 4 5 6 |
<?php $arr=array("apple","orange","banana"); $var= "apple"; var_dump( in_array( $var,$arr ));//true |
array_merge
配列の結合です。単一の配列に対して行う場合は番号を振りなおします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<?php $arr=array( array("name"=>"matsumoto","age"=>30), array("name"=>"suzuki","age"=>35) ); $arr2=array( array("name"=>"saitou","age"=>40), array("name"=>"watanabe","age"=>45) ); $arr3 = array_merge( $arr,$arr2 ); var_dump($arr3); //array(4) { // [0]=> // array(2) { // ["name"]=> // string(9) "matsumoto" // ["age"]=> // int(30) // } // [1]=> // array(2) { // ["name"]=> // string(6) "suzuki" // ["age"]=> // int(35) // } // [2]=> // array(2) { // ["name"]=> // string(6) "saitou" // ["age"]=> // int(40) // } // [3]=> // array(2) { // ["name"]=> // string(8) "watanabe" // ["age"]=> // int(45) // } //} $arr=array(2=>"aaa",5=>"bbb"); //こういった歯抜けの配列の整形に便利 $arr=array_merge( $arr); var_dump( $arr); //array(2) { // [0]=> // string(3) "aaa" // [1]=> // string(3) "bbb" //} |
is_array
対象のデータが配列かどうかをチェックしてくれる関数です。
1 2 3 4 5 6 |
<?php $arr = array("a","b","c"); $var ="d"; var_dump(is_array($arr)); //true var_dump(is_array($var)); //false |
array_keys,array_values
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php $arr = array("name"=>"matsumoto","age"=>30,"pref"=>"chiba"); $keys = array_keys($arr); $values = array_values($arr); var_dump($keys); var_dump($values); それぞれのキーと値を取り出します。 //array(3) { // [0]=> // string(4) "name" // [1]=> // string(3) "age" // [2]=> // string(4) "pref" //} //array(3) { // [0]=> // string(9) "matsumoto" // [1]=> // int(30) // [2]=> // string(5) "chiba" //} |
array_map
配列全体に対して一括して関数の処理を行います。
これが使えると一気に幅が広がりますね。その代り理解が難しいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $arr = array("name"=>"<p>matsumoto</p>","age"=>"<span>30<span>","pref"=>"<div>chiba</div>"); $arr2 = array_map("htmlEscape",$arr); var_dump($arr2); function htmlEscape( $param){ return htmlspecialchars($param, ENT_QUOTES, 'UTF-8'); } //array(3) { // ["name"]=> // string(28) "<p>matsumoto</p>" // ["age"]=> // string(26) "<span>30<span>" // ["pref"]=> // string(28) "<div>chiba</div>" //} //クラス内のメソッドを使うときです(それ以外はすべて上と一緒) //別クラスの時はクラス名を入れましょう。 $arr2 = array(array($this,htmlEscape),$arr); |
とりあえず普段業務で使うものをあげてみました。
おまけ&追記
配列で空白のものを強制的に消去してくれる配列があります。
array_filter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $arr = explode(",","hoge,,foo,bar"); var_dump($arr); //array(4) { // [0]=> // string(4) "hoge" // [1]=> // string(0) "" // [2]=> // string(3) "foo" // [3]=> // string(3) "bar" //} $arr2 = array_filter($arr); var_dump($arr2); //array(3) { // [0]=> // string(4) "hoge" // [2]=> // string(3) "foo" // [3]=> // string(3) "bar" //} $arr3 = array_merge($arr2); var_dump( $arr3); //array(3) { // [0]=> // string(4) "hoge" // [1]=> // string(3) "foo" // [2]=> // string(3) "bar" //} |
array_map,array_filterのさらに詳しい使い方はこちら
その他、多重ソートが行えるarray_multisortなど
手抜きですが、リンク張るだけです。