Warning: Invalid argument supplied for foreach() in
というのが出る。
基本的にはこう書いているが
if(is_array($data)){
foreach( $data as $b=>$v){
print $v;
}
}
こんな書き方も出来る(array)を入れるだけ。
foreach((array) $data as $b=>$v){
print $v;
}
配列データが無いときにもエラーメッセージは表示されない。
2010/12/10
2010/02/02
現在のページ(カレントURL)をphpで取得する
ラベル:
php
ヘッダやフッタなど、ほぼ全ページに渡って同じ内容だと思うのだが、これを更新するときはどのようにしているだろうか。私は Dreamweaver 嫌いなので、テンプレート機能は使わない。テンプレートを更新すると、テンプレートを使っているページ全てをアップロードしなければならないので、面倒だし危険性(先祖返り)の可能性もある。
もうお気づきだろうが、私は ssi を使用している。これならば ssi だけをアップロードすれば良いし、php を ssi にすればレイアウトは同じでページ毎にやや違うといった、メニューやパンくずリストにも使える。
まず、php で現在ページを取得する。
これで ssi として php を読み込んでいる側の html の url を取得できる。そしてこの取得した url を使って条件分岐を行う。
その前に、/index.html と / を分岐させなくてもいいように、置換しておく。
もしこの ssi がタイトルやメタ情報など、ページごとに違う用途に使うのであれば、$url に対する switch で分岐を行い、メニューのようにディレクトリごとに違う用途であれば、$url にディレクトリ名を strpos で探し、分岐を行う。
これでメタ情報だろうがメニューだろうがパンくずだろうが ssi にすることができ、更新が楽になる。
もうお気づきだろうが、私は ssi を使用している。これならば ssi だけをアップロードすれば良いし、php を ssi にすればレイアウトは同じでページ毎にやや違うといった、メニューやパンくずリストにも使える。
まず、php で現在ページを取得する。
$url = $_SERVER['REQUEST_URI'];
これで ssi として php を読み込んでいる側の html の url を取得できる。そしてこの取得した url を使って条件分岐を行う。
その前に、/index.html と / を分岐させなくてもいいように、置換しておく。
$url = str_replace("index.html", "", $url);
もしこの ssi がタイトルやメタ情報など、ページごとに違う用途に使うのであれば、$url に対する switch で分岐を行い、メニューのようにディレクトリごとに違う用途であれば、$url にディレクトリ名を strpos で探し、分岐を行う。
これでメタ情報だろうがメニューだろうがパンくずだろうが ssi にすることができ、更新が楽になる。
登録:
投稿 (Atom)
