MinEMemO
🏷️「PHP 」Tag 記事一覧(3 posts)
【PHP】空判定メモ

2022-10-17

PHP()空判定メモ PHP Version 5.6.30の検証結果です。 結論 基本的には不要な値を把握して == はつかわずに === を使ったり明確に書く方がいいと思います。 ただ値が把握できない時などは == よりは empty() がわかりやすいし安全だと思いました。 実験メモ empty() empty(null) true empty(false) true empty(”) true empty(0) true empty(‘0’) true empty(‘12345’) false empty(12345) false empty(‘abcde’) false empty(array()) true == ” null true false true ” true 0 true ‘0’ false ‘12345’ false 12345 false ‘abcde’ false array() false == 0 null true false true ” true 0 true ‘0’ true ‘12345’ false 12345 false ‘abcde’ true array() false == ‘0’ null false false true ” false 0 true ‘0’ true ‘12345’ false 12345 false ‘abcde’ false array() false isset() 「変数が宣言されていること、そして null とは異なることを検査する」なので今回の検証からは除外 https://www.php.net/manual/ja/function.isset.php is_null() 「 変数が null かどうか調べる」なので今回の検証からは除外 https://www.php.net/manual/ja/function.is-null.php 明確に把握してかけるのが一番です!
【PHP】ディレクトリにあるファイルを削除する関数

2020-11-25

はじめに ファイルを削除する関数を書いたので載せておきます。 ファイル、ディレクトリを操作するメソッドはいろいろありますが、今回はis_Dot()がつかえる、DirectoryIteratorクラスを使っています。 引数で以下の設定ができます。 削除対象のフォルダパス 削除対象の拡張子 〇日前のファイルを削除対象とするか パスがファイルの場合に条件を満たせば削除し、パスがフォルダなら再帰処理を行い配下のフォルダまですべて処理を行います。 なお、 $pathに渡したフォルダのパスのファイルが削除対象 になります。 ご利用の際は動作確認を行ったうえで、自己責任でお願いします。 ファイルを消すものなので、テストして慎重に使ってください 。 DirectoryIterator クラス https://www.php.net/manual/ja/class.directoryiterator.php コード php <?php /** * $day日前より古い+$exの拡張子のファイルを対象に$pathフォルダから削除する * * @param {string} $path フォルダのパス * @param {array} $ex 配列に含まれる拡張子を削除対象とする * @param {int} $day $day日前より古いファイルを削除対象とする * * ※$path = 'folderPath'に削除したいファイルがあるフォルダを指定してください。*/ function fileDelete ( $path = 'folderPathを指定する' , $ex = array ( 'csv' ) , $day = 7 ) { //dirがある、$exが配列、$exの値がある、$dayが整数だったら処理開始 if ( is_dir ( $path ) && is_array ( $ex ) && count ( $ex ) !== 0 && is_int ( $day ) ) { $date = new DateTime ( ) ; $dayAgo = $day -> modify ( '-' . $day . 'days' ) -> getTimestamp ( ) ; //確認するときは ->format(Y-m-d H:i:s) すると日時でみれます $dir = new DirectoryIterator ( $path ) ; foreach ( $dir as $file ) { //. と .. は無視する if ( ! $file -> isDot ( ) ) { //ファイルの時の処理 if ( $file -> isFile ( ) ) { //$dayAgoより古い & 対象の拡張子のファイルを削除 if ( $file -> getMTime ( ) < $dayAgo && in_array ( $file -> getExtension ( ) , $ex , true ) ) { unlink ( $file -> getPathname ( ) ) ; } } //ディレクトリの時の処理 if ( $file -> isDir ( ) ) { fileDelete ( $file -> getPathname ( ) ) ; //ディレクトリなら再帰処理 } } } } }
【PHP】データの連番確認と、抜け番またはMAX+1を生成する関数

2020-06-04

はじめに データベースから持ってきた数字のデータをチェックし、「抜け番」または「MAX+1」を生成する関数を作成しました。 作成環境のPHPが5.3系だったので、コードは5.3系で動くものになっています。 何か不整合があれば教えてください。 またご利用の際は、ご自身でしっかりチェックを行い、自己責任でご利用をお願いいたします。 コード PHP /** サンプルデータ* DBなどから取得したりする流れになると思いますが、処理中に最後の番号を参照するので、昇順できちんとソートしましょう。*/ $numData = array ( 1 , 2 , 4 , 5 ) ; /*** 新規番号を抜け番 or MAX+1で発行する* @param {array} $numData DBや何かしら持ってきたNoのデータ配列* @return {number} 抜け番 or MAX+1*/ function issueNo ( $numData ) { $maxIdx = count ( $numData ) - 1 ; $range = range ( 1 , $numData [ $maxIdx ] ) ; //1~データの最後のNoで連番の配列を作成 foreach ( $range as $idx => $rangeNo ) { if ( $rangeNo !== $numData [ $idx ] ) return $rangeNo ; //抜け番を返して終了 } //MAX+1を返して終了 return $numData [ $maxIdx ] + 1 ; } 処理結果 抜け番があるデータを処理した場合 例えば array(1,2,4,5); をこの関数に渡し処理した場合は 抜け番の「3」がリターン されます。 抜け番がないデータを処理した場合 例えば array(1,2,3,4,5); のようなデータを処理すると MAX+1の「6」がリターン されます。 解説 ポイントはrangeです。 PHP $range = range ( 1 , $numData [ $maxIdx ] ) ; rangeで今回作成される配列は 1~取得データのMAX値の連番の配列 になります。 rangeで作成した連番の配列と取得したデータの数字の配列を比較する ことで、連番かどうかを確認しています。 以上です。 慣れないうちは頭で処理を想像するのが大変かもしれませんが、作っていれば慣れていくので大丈夫です
profile_icon
taka
プログラマー
いつでも転職希望の業務経験6年目(2022時点)のエンジニアです。 仕事の合間にすこしずつ転職活動はしていますが、条件が合う場合ぜひTwitterなどでご連絡頂けると嬉しいです。 希望条件は現在の年収を下回らない(手取り31万以上)、基本残業なし、ある程度保守運用が管理されていて、その経験ができる職場で働きたいです。 (管理がされてない案件が多く、心的安全が少ない仕事が多いので、ある程度安心して働きたいと感じています。) 経験言語はHTML、CSS、javascript、PHP、MySQL、Docker、Vuejs、Laravel このブログは完全に自作で静的ジェネレータで作りました。 この範囲で言えば React.js Gatsby.js GraphQLも経験があります。