(CASE sex WHEN '1' THEN '男性' WHEN '2' THEN '女性' ELSE '未設定' END) のように括弧でくくる
PHPで、アルファベット26文字の配列を簡単に作れないかと思って調べたら、ちょうどよい関数がありました。 説明 array str_split ( string $string [, int $split_length= 1 ] ) 文字列を配列に変換します。 PHP: str_split - Manual これを利用すれば、「array('a', 'b', ... );」なんてするよりも少ないタイプ数で実現できます。 <?php $alphabet = str_split('abcdefghijklmnopqrstuvwxhz'); var_dump($alphabet); ちなみにやりたかったのはこんなこと。 <?php $alphabet = str_split('abcdefghijklmnopqrstuvwxhz'); foreach ($alphabet as $a1) { f
今までPHPでプログラミングを行ってきて、頻繁に出会ったエラーメッセージとその対策を説明したいと思います。 Warning: session_start(): Cannot send session cache limiter - headers already sent in エラーが発生しているPHPファイルのフルパス on line エラーが発生している行 セッションIDの格納にCookieを利用する設定となっており、 session_start関数の呼び出しより先にブラウザに対してレスポンスが出力されている場合、上記エラーが発生します。 これは、cookieを利用する為にHTTP通信のレスポンスヘッダにSet-Cookieヘッダを埋め込むのですが、 既にブラウザに対してレスポンスが出力されている為、 レスポンスヘッダを変更する事が出来ない状態(HTTP通信の仕様)になってしまい、エ
日本語が入った正規表現を使って検索、置換を行うには preg_match , preg_replace を使う その際文字化けが起こってしまうことが多いが、原因は【/】をエスケープし忘れている ところにあると思うので、【/】はきちんとエスケープしよう。 1 日本語エンコードを指定する mb_regex_encoding('UTF-8'); // もしくは SJIS, EUC-JP 2 検索する文字( $find_text )と区切り文字(/)はあらかじめエスケープしておく $find_text = preg_quote($find_text, '/'); 3 正規表現を使って置換を行う $string=preg_replace("/($find_text)/", "置換する文字列",$string ); これで文字化けもおこらないと思います。 エンコードUTF-8で日本語を使う場合は u
ちょっと説明用も兼ねて、基本的なsql_dumpエレメントからDebugKit, DataSourceのgetLog()を使った方法まで、まとめました。 sql_dumpエレメントで確認する <?php echo $this->element('sql_dump'); ?> https://github.com/cakephp/cakephp/blob/2.3.6/app/View/Layouts/default.ctp#L60 CakePHPデフォルトのレイアウトであるdefault.ctpからは、この様にSQLダンプ用のエレメントが読み込まれてます。 既に開発が進んでるプロジェクトだったり、配布されてるレイアウトをベースにしていたりすると、sql_dumpエレメントの読み込みが削除されてるかもしれないけど、普通は一番簡単にSQLを確認出来るところです。 if (!class_exis
文字列を与えるとそれを文に分割してくれる関数が欲しい。PHPにはmb_splitがあるので、たとえば中国語の文字列を文に分割したい場合、以下のようにすればうまくいきそうである。 $target = "5月29日,尼泊尔首都加德满都皇宫博物馆前,庆祝人类登顶珠峰60周年总结表彰颁奖大会隆重举行。登顶珠峰及其各项记录保持者、首次登顶珠峰者的家属等汇聚一堂,享受应有的荣耀。尼泊尔艺术工作者和民间艺人表演了精彩的节目。为期四天的尼泊尔庆祝人类登顶珠峰60周年庆祝活动由此落幕。" $delimiters = '(。"|。”|?”|!”|。|;|!|?|;|!|?|n)'; $result= mb_split($delimiters, $target)
2013.12.17 PHP の array_merge() や array_recursive() 等の違いをまとめました 以前、JavaScript でのオブジェクトのマージについてまとめましたが、 今回は似たような話で PHP の配列のマージについてまとめます。 PHP の配列のマージ方法には大きく3つあり、 "+" 演算子 array_merge() 関数 array_merge_recursive() 関数 あと、個人的に CakePHP をよく使っているので CakePHP の Hash::merge() メソッド この4つの方法について、挙動の違いを調べました。 一次元配列 実際にコードを動かしてみて、2つの配列をマージした結果を見てみます。 対象データはこちら。 <?php // 対象データ $a = array( 0 => 'blue', 1 => 'red', 'a'
※本サイトではアフィリエイト広告を利用しています。記事内および商品リンクにはプロモーションが含まれる場合があります。 BOMありUTF-8の先頭データを削除するBOMありUTF-8ファイルを読み込んだ時に、何かと問題になる先頭BOMデータを削除する方法です。 Windowsのメモ帳にてUTF-8で保存した場合、BOMありUTF-8形式で保存されます。 UTF-8のファイル内の文字列読み込んで何らかの処理をする場合、BOMを含んだ状態で文字列を扱うと色々と問題が出てきます。 何か文字列処理で不具合が見つかったけど、原因がよくわからーん/(^o^)\ 突き詰めてみたらどうみてもBOMが原因です本当にありがとうございました。 って経験、ありませんか? BOMを削除しても問題ない場合は、文字列から事前に削除しておくのが無難でしょう。 /** * 文字列からBOMデータを削除する * * @para
TCPDFで出力した内容のページ上部に横線が入ってしまいます。 現在、社内でやり取りされる書面をWebのフォームから書き込んで出力できたら 便利だと思って、自前の環境でプログラミングしております。 TCPDFで出力した内容のページ上部に横線が入ってしまいます。 現在、社内でやり取りされる書面をWebのフォームから書き込んで出力できたら 便利だと思って、自前の環境でプログラミングしております。 しかし、製作するにあたって意図しない横線がページ上部に出てしまい、 これを消すのに手間取っております。 (画像の添付ファイルに実際に出力したものを貼っておきます) この画像のソースは <?php // require_once('./tcpdf.php'); //PDFオブジェクトの作成 $pdf = new TCPDF('P', 'pt', 'A4', true,'UTF-8'); //1ページ目の
PHP5.4を動かす際にPHP Fatal error: Call-time pass-by-reference has been removedと出たのでメモ Call-time pass-by-reference(関数呼び出しの際に参照渡しを行う)機能がなくなった PHP5.4からCall-time pass-by-reference(関数呼び出しの際に参照渡しを行う)機能がなくなったみたいです。 対処方法 参照渡しを値渡しにすればいいのです。 <?php /** *テスト */ $a = 1; $b = 2; function test(&$a, $b) { return true; } //test(&$a,$b);//これを実行するとエラーになる test($a, $b); //エラー回避になる 【&】を抜けばいいだけです。 実際はダメなのかもしれませんが動くのでこの対応でいい
配列変数の内容を確認するために var_dump() や print_r() は便利ですが、cron で動作させるプログラムが正常に動作しているか調べたいときなど、ブラウザ上に表示して確認できないことは多いと思います。 var_dump() などの内容をファイルとして保存する場合、ob_start() を使って出力のバッファリングをすると簡単に出来ます。 <?php $arr = array('test', 'sample'); ob_start(); var_dump($arr); $out = ob_get_contents(); ob_end_clean(); file_put_contents("sample.txt", $out); ob_start() と ob_end_clean() で挟まれた部分は画面上には出力されず、バッファに格納されます。 その内容を取り出すには ob
リクエストのログを記録していくときにjQueryのajax通信を使う場合は除外したかったので、サーバー側で判別する方法を調べたメモ。 環境変数のHTTP_X_REQUESTED_WITHを見れば分かるみたい。サーバーサイド(PHP)のサンプルコードは下のような感じ。 /** * Ajaxによるリクエストかどうか * * @return boolean True or False */ public function isAjax() { if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ return true; } return false; } これで判断できるのはjQueryがajax通信をするときのリクエス
str_replace()で複数文字列の置換ができる。 sourceをSourceに、destinationをDestinationに置換したい場合、以下のように一括で置換できる。 $subject= "source:XXX destination:XXX"; $search = array('source','destination'); $replace = array('Source','Destination'); echo str_replace($search,$replace,$subject); //=>Source:XXX Destination:XXX 置換が配列の順番で対応しているので、対象の数が増えた場合に変換前と変換後の対応付けがわかりづらくなる。 その場合、連想配列で対応づけを行い、array_keys()とarray_values()でわけるとわかりやすい。
1. getSheetメソッドを使用して、シートの参照を取得します。 [出力されたExcelファイル(2007形式)] // 必要なクラスをインクルードする set_include_path(get_include_path() . PATH_SEPARATOR . "./Classes/"); include "PHPExcel.php"; include "PHPExcel/IOFactory.php"; // PHPExcelオブジェクトを生成する $book = new PHPExcel(); // インデックスでシートの参照を取得する $sheet = $book->getSheet(0); // シート名を変える $sheet->setTitle("test"); // Excel2007形式で保存する $writer = PHPExcel_IOFactory::createW
1. getSheetByNameメソッドを使用して、シートの参照を取得します。 [出力されたExcelファイル(2007形式)] // 必要なクラスをインクルードする set_include_path(get_include_path() . PATH_SEPARATOR . "./Classes/"); include "PHPExcel.php"; include "PHPExcel/IOFactory.php"; // PHPExcelオブジェクトを生成する $book = new PHPExcel(); // シート名を指定してシートの参照を取得する $sheet = $book->getSheetByName("Worksheet"); // シート名を変える $sheet->setTitle("test"); // Excel2007形式で保存する $writer = PHP
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く