Home > PHPのお話

このコラムでは、PHP・Perlなどの技術的なことを書いていこうと思います。

それほど更新頻度は高くないと思いますが、つまらない事から難しい事まで

書けたら良いなぁ~と思っています。

世の中いろいろ

colorbox.js カスタマイズ

popupを表示するのに人気があるのかな?
jqueryでできたLightBox風のpopupだそうな


まぁ、いろいろなエフェクト設定、表示させれるモードがあって簡単に設置できる分にはとても良い感じだ


でだ、画像やページのスライドショー機能を持っているのだが改ページ機能はディフォルトでループとなっている
* まぁループで基本は問題なんだけどね( ^ω^)・・・


今回修正するのはループしたくない要望を改善させる

1 > 2 > 3 > 1 > 2
となるのがいやなんだそうな (もちろんもどるもあるぜ)

1 <> 2 <> 3 としたいらしい (最初は戻りがなく最後は進がない)

まずそんな設定をcolorbox.jsは持ってないので

settingsに
previousDisable, nextDisableの変数を持たせる
* デフォは falseにでもしておきましょうか


if (settings.nextDisable) {
$("#cboxNext").css("display", "none");
} else {
$("#cboxNext").css("display", "");
}
if (settings.prevDisable) {
$("#cboxPrevious").css("display", "none");
} else {
$("#cboxPrevious").css("display", "");
}


あとはサブウィンドウがロードされる箇所にこんな感じにする
colorbox.cssの該当のタグを消せばいいんですね


* ただどこが開始か終了かわからない(詳しくソース見てないからw
 なので面倒だから


class='group iframeNonPrev'
class='group iframe'
class='group iframeNonNext'

とか手抜きww
rel が同じなら繋がるからね(。-_-。)



あぁ あとcolorbox.jsはiframeもサブウィンドに表示できるんですが
親 > 子 > 孫
っとウィンドを切り替えると

親 > 子(親の子) > 孫(子の子)
って位置づけになり

孫窓から一気に親のリンクを変えれないみたいだった

なので

無理やりunloadに自分の親をリンクさせて自分を閉じるというわけのわからない処理をいれた・・
すごく気持ち悪い(ーー;)


$(window).unload(function(){
ownCloseAndJump(GetCookie('url'));
});

function ownCloseAndJump(url){
if((url != null) && (url != 'undefine')){
var expire = new Date();
expire.setTime( expire.getTime() + 1000 * 2 );
document.cookie="url=" + url + "; expires=" + expire.toUTCString();

parent.location.href=url;
parent.$.fn.colorbox.close();
}
};




でもきっともっとスマートなやりかたがあるんだろう・・・


  • TrackBack (Close): -

配列 ソート

なんだかんだで半年も書いてない・・・
なので無理クリ何かお題を書いてみる


とりあえず、明けすぎましておめでとうございます

本年もバリッバリに稼動しております(*゜ー゜)


さて、連想配列の値をソートしたい!
なんてざらにあるわけでして

単に「php 配列 ソート」でググっても何を使ったらいいのかわからなーい
と思う人もいるでしょう
こんなにいろいろありますよね->PHP


とりあえず、ksort()、asort()使えばええやろー
的なのはダメダメッス

効率のよい選択をしないとパフォーマンスは愕然と落ちます
そもそも適当に関数にぶち込んだだけでは目的の解は得られないでしょうが・・・


なので私が良く使うパターンを書こうかなと思います
全てを利用したことはないんですけどね(-_-;)

単純な連想配列の場合
 $array = ('hoge' => 1, 'hogege' => 6, 'fugafu-' => 3);
 キーソートの場合は、ksort,krsort
 値ソートの場合は、asort,arsort
 *但し、値がStringの場合はarray_multisort を使う場合もあり

多次元配列の場合 [配列の要素が、不変の場合]
 $array['hoge'] = ('hoge' => 1, 'hogege' => 5, 'hogeho-' => 3);
 $array['fuga'] = ('hoge' => 6, 'hogege' => 1, 'hogeho-' => 2);
 array_multisortを使用

多次元配列の場合 [配列の要素が、可変の場合]
 $array['hoge'] = ('hoge' => 1, 'hogeho-' => 3, 'fugafuga' => 4);
 $array['fuga'] = ('hoge' => 6, 'hogege' => 1, 'hogeho-' => 2);
 usortを使用
 *array_multisortを利用した方がパフォーマンス的には格段に上がりますが、定義するのが面倒
 そもそも、パフォーマンスを上げるのであれば配列を使用せず、別の方法でデータを扱うべきだと考える


使用例は、コツラ



まぁ、書いてみて思ったが自分本位過ぎる別け方だな・・・
そして解りづらい気がする





  • TrackBack (Close): -

久しぶりに

PHPを書いている

久しく(約二年)触ってなかったらいろいろと感覚がおかしい・・・(-_-;)

Smarty3.0+PHP5.3

PHP5が出たての頃は、推奨とされていた__autoloadがSmartyに邪魔される
※PHP5.3以降では非推奨

なので過去に作ってあったFWを使おうとしたら怒られたo(`ω´*)o

原因は、PHP5.3からspl_autoload_registerを使用するとの事なので


function autoloader() {
echo "hoge-fuga-";
}
spl_autoload_register('autoloader');

みたいに書くそうな


そんなわけで、いろいろと変わったら調査する時間をちゃんと持たないといけないなーっと
忙しくても隙を見てやってかないとー

っとエンジニアとは思えない今更なことに気づかされた・・・(-_-;)


  • TrackBack (Close): -

WEBサービス追加

Creative D.S.のWEBサービスとして
「絵文字コンバート」ツールを公開しました。
(´・ω・)っこちら 


まぁ、今更システム込みのコンテンツで3キャリア用にファイルを別けているところは少ないだろうが
(と思ったら意外と結構あったり・・・する

というわけで、パパッと作ってみましたょ(´∀`)
デザイナー向けになるのかな

動作も適当に確認したので動かないブラウザもあるかもね(´∀`)
WinのIEとFF使えばまず問題ないでしょう


ついでに
モバイル版ベストスポットに
簡単ログイン機能を追加!

個人的にはログイン情報を省略するのは、キライなんだが
まぁ、ユーザビリティ的には必要って事で

確かに楽ッチャ楽だわ
  • TrackBack (Close): -

Geocoding - 住所から緯度経度を検索

今更っちゃ今更ですが、住所から経緯度を取得する方法

■Googleで取得する場合
//====================================================
// 住所から経緯度取得(Google)
function get_geocode_google(){
  $Addr = "検索したい住所";
  $Key = "GoogleMap API KEY";
  $GoogleMapUrl = "http://maps.google.com/maps/geo?";

  // 住所をUTF-8、URIエンコード
  $Addr = mb_convert_encoding($Addr, "UTF-8", "auto");
  $Addr = urlencode($Addr);

  //リクエストのパラメーター
  $request = "&q=" . $Addr . "&key=" . $Key . "&output=xml";

  //XMLを一度バッファーに取り込む
  $Url = $GoogleMapUrl.$request;
  $Contents = file_get_Contents($Url);

  //不要文字コードを削除
  $Search = array("\0", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x0b", "\x0c", "\x0e", "\x0f");
  $Contents = str_replace($Search,"", $Contents);

  //バッファーをXMLとして扱う
  $xml = simplexml_load_string($Contents);

  foreach($xml->Response as $res){
    $code = $res->Status->code;
    //正常に返された場合
    if($code == '200'){
     $coordinates $res->Placemark->Point->coordinates;
    }
  }

  //longitude:経度 latitude:緯度
  list($lat,$lon) = explode(",",$coordinates);
}


■Yahooで取得する場合
//====================================================
// 住所から経緯度取得(YAHOO)
function get_geocode(){
  $Addr = "検索したい住所";
  $APIKEY = "Yahoo API KEY";
  $YahooMapUrl = "http://api.map.yahoo.co.jp/LocalSearchService/V1/LocalSearch";

  // 住所をUTF-8、URIエンコード
  $Addr = mb_convert_encoding($Addr, "UTF-8", "auto");
  $Addr = urlencode($Addr);

  //リクエストのパラメーター
  $request = "?appid=" .$APIKEY. "&p=" . $Addr;

  //XMLを一度バッファーに取り込む
  $Url = $YahooMapUrl.$request;
  $Contents = file_get_Contents($Url);

  //不要文字コードを削除
  $Search = array("\0", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x08", "\x0b", "\x0c", "\x0e", "\x0f");
  $Contents = str_replace($Search,"", $Contents);

  //バッファーをXMLとして扱う
  $xml = simplexml_load_string($Contents);

  foreach($xml->Item as $res){
    //longitude:経度 latitude:緯度
    $lat = $res->DatumTky97->Lat;
    $lon = $res->DatumTky97->Lon;
  }
}


どちらの場合も大して変わりないですね。
ポイントは、リクエストをUFT-8にエンコードしてURIエンコードをすれば良いだけですね(´∀`)


取得した経緯度から実際に地図を表示させるには・・・。
まぁ、次回に。眠いッス( ´O)η
  • TrackBack (Close): -

ほぉ~ そうだったのか

PHPで配列をfor文でまわす時にcount()のとり方でパフォーマンスが違うそうな

よく見る参考書では、
for ($i=0 ; $i < count($array) ; $i++){
 print $array[$i];
}

なんて書いてあるよね。(´・ω・`)

でも
$count = count($array);
for ($i=0 ; $i<$count ; $i++){
 print $array[$i];
}

としたほうが早いそうな(`・ω・´)
※ただし、配列の要素が変化したりする場合はこれに該当はしないかも  しれない・・・

なんでかというと、ループ処理判定をする$i 毎回count()を実行するためだそうですょ



今までPHP書いてきたけどまったく気にしてなかったなぁ。
まぁ、自分は配列に出し入れする時は隙間なく順序良く入るように
心がけているからそうでもないんだろうが・・・・シランケド( ゜Д゜)

C言語の時も気にしてなかったが、Cもそうだったのかしら(´・ω・)ハテ?


まぁ、これからは気にして使ってみます(´д`)


今回、参考にしたサイトは
(´・ω・)っコツラ


そもそも、foreach使えって話だな
こっちの方が、forより早いし
  • TrackBack (Close): -

携帯GPSを使った

携帯電話のGPS機能を使って簡単なゲームを作ってみた。



サイト名:携帯Gバトラー

経緯度の座標をキャラクターパラメーターとして使用したゲーム。
昔あったバーコードバトラーみたいなもんかな(・_・;)
  • TrackBack (Close): -

More...

Home > PHPのお話

Recent Entries
Search
Feeds

Page Top