ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2010/12/10

foreachで連想配列をループする際に出るエラーについて

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/02/02

現在のページ(カレントURL)をphpで取得する

ヘッダやフッタなど、ほぼ全ページに渡って同じ内容だと思うのだが、これを更新するときはどのようにしているだろうか。私は Dreamweaver 嫌いなので、テンプレート機能は使わない。テンプレートを更新すると、テンプレートを使っているページ全てをアップロードしなければならないので、面倒だし危険性(先祖返り)の可能性もある。

もうお気づきだろうが、私は 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 にすることができ、更新が楽になる。