便利なPHPの関数15選

@ハクト 2022-01-21 18:48:17に投稿

PHPでよく使用する便利関数をまとめました。

他にも様々な便利関数はありますが、今回は15個に絞って紹介します。

in_arrayでorの条件文を短くする

変数の値をor判定行う場合、変数名によってはif文が長くなってしまいますよね。

if ($alphabetStr=="a" || $alphabetStr=="b" || $alphabetStr=="c"){
    echo "ok";
}else{
    echo "ng";
}

こんなときにin_arrayを使用するとifが短くなり簡単に記述できます

if (in_array($alphabetStr,['a','b','c'])){
    echo "ok";
}else{
    echo "ng";
}

拡張子を取り出す

文字列を配列化するexplode関数と配列の最後の要素を返すend関数を使用して拡張子を取り出します。

$fileName='aaa.txt';
$extension=explode('.',$fileName);
echo end($extension);

 

txt

URLのクエリ文字列を配列化

prase_urlでクエリ文字列を取り出し、parse_strで文字列を配列化します。

$url='https://exsample.com?a=1&b=2&c=3';
$query=parse_url($url, PHP_URL_QUERY);
parse_str($query, $output);
print_r($output);

 

Array ( [a] => 1 [b] => 2 [c] => 3 )

複数の拡張子を指定してファイル名を取得する処理を一行で書く

glob関数を使用すると一行でパターンにマッチするファイルを取得することができます。

$files = glob('*.{php,html}', GLOB_BRACE);
print_r($files);

 

Array (  [0] => function.php [1] => index.php  [2] => test.html )

文字列を丸めて最後に「...」を追加する

mb_strimwidth関数は文字を丸めるのに最適。丸める幅は第3引数に指定します。幅は半角で1、全角2として数えます。

第4引数には文字列の最後に表示する文字を指定します。この引数を指定した場合、文字列の最後に追加されるのではなく、丸めた最後の文字と置き換えるので幅の指定には注意が必要です。

echo mb_strimwidth('あいうえおかきくけこ',0,13,'...');

 

あいうえお...

配列内の値の合計を計算

array_sumを使うとExcelマクロのsum関数のように配列内の数値の合計値を算出できます

$array=[1,2,3,4];
echo array_sum($array);
//10

$array=["1","2","3",4];
echo array_sum($array);
//10   文字列形式の数値が含まれている場合も計算可能

$array=['aaa',1,'bbb',2];
echo array_sum($array);
//3 文字が含まれている場合、無視して計算します 

2つの配列を比較し差分を取得する

array_diffは第一引数に比較元を指定し、複数の配列から差分を取得できます

$array1=['apple','orange','grape','kiwi'];
$array2=['cherry','orange','banana','kiwi'];

//$array1の要素のうち、$array2に含まれない要素を返します
$ret = array_diff($array1,$array2);
$print_r($ret);
//Array ( [0] => apple [2] => grape )

比較対象の配列は複数指定可能。 第一引数($array1)が比較元となります。 array_diff($array1,$array2,$array3,...); 

配列から重複した値を削除

array_unique関数を使うと配列内の値から重複値を削除できます

$array=[1,1,2,3,3,4,5];
print_r($result=array_unique($array)); 
//Array ( [0] => 1 [2] => 2 [3] => 3 [5] => 4 [6] => 5 )


//array_uniqueではキー飛び飛びになるので、新しく割り振るには以下で可能です

print_r(array_values($result)); 
//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) "

配列をフィルタリング

【書式】 array_filter( $配列 [, コールバック関数 [, $flag ]] )

コールバック関数を呼び出すことで、for文を使わずにフィルタリングできます。

$prices=[100,200,300,400,500];

$result=array_filter($prices, function($price) {
  return $price >= 300; //300以上の値を返す
});

print_r($result);
// Array([2]=>300 [3]=>400 [4]=>500)

連想配列からカラムを指定して新しく配列を作る

array_column関数は連想配列から新たに添字配列を作成できます

$array=[ 0=>['id'=>1,'name'=>'aaa','age'=>24], 1=>['id'=>2,'name'=>'bbb','age'=>44] ];
//idをキーにname配列を作成

print_r(array_column($array,'name','id'));
// Array ( [1] => aaa [2] => bbb )

DBから取得したデータをセレクトボックスに設定する場合になどに使えますね

変数から連想配列を作成する

compactを使うと変数から連想配列を作れます

$name="yamada";
$age="33";

$array=compact('name','age');

print_r($array); 
// Array ( [name] => yamada [age] => 33 )

laravelやcakephpでコントローラーからviewへ変数を渡す際によく使用します。

配列の要素を置き換える

array_replaceで配列内の要素を置換できます

第1引数の配列を第2引数以降の配列で置換します。

添字配列、連想配列どちらも置き換え可能。キーが存在しない場合は、要素に追加されます。 

$array=['name'=>'yamada','age'=>33];

$repArray=['name'=>'suzuki','email'=>'aaa@test.com'];

$result=array_replace($array,$repArray);

print_r($result);
//Array ( [name] => suzuki [age] => 33 [email] => aaa@test.com

配列の値を複数の変数に代入する

listは配列の値を一括で複数の変数に設定できます

$array=[1,'yamada', 31];

list($id,$name,$age)=$array;

echo 'id:'.$id.' name:'.$name.' age:'.$age;

// id:1 name:yamada age:31

日付やCSV取得時に使用すると便利

list($year, $month, $day) = explode("/", $date) 
while(list($id, $name, $age) = fgetcsv($fp) !== FALSE)

ファイル削除

unlinkでファイルを削除できます

echo unlink("aaa.txt") ; //ファイルが存在する
//true

echo unlink("bbb.txt") ; //ファイルが存在しない
//false

//成功した場合に true を、失敗した場合に false を返します

glob()指定でパターンにマッチするファイルを複数削除できます

foreach ( glob('dir/*.txt') ) as $file ) { unlink($file); }"

変数・配列の削除

unsetは配列の要素を削除できます。変数を指定した場合はnullになります。

$hoge="test"; unset($hoge);  //nullになる

$array=[1,2,3,4,5];

unset($array[2]);  //[1,2,4,5]となる unset($array);   

//nullとなる連想配列の要素も削除できます。

DBから取得した一部のカラム要素が不要な場合などに使えますね。

@ハクト

サービス作り・デザイン好き。70年代生まれのWEBエンジニア。WEBパーツをCSSでカスタマイズしてコピペできるサービスを運営中「Pa-tu」。実装したWEBパーツやツールを利用してWEB情報やライフハックを発信してます。

Twitter