eval で、eval()'d codeエラー:仕方がない。違う方法でクリア ・・・ 【PHP】
2008-07-23
phpでスクリプト書くとき、前から結構 eval が好きだったので
(なんで?って。
ん~ん。
ごちゃごちゃからきれいに変数値 とれるとこかなぁ)
前に紹介したようによく使ってます。
$val = $$val では簡単に処理できない
配列変数がらみでよく使いますが・・・
▼ ところが
今回は疲れた。
信念(?)を曲げて、 eval で処理することを断念。
一応、記録しておこう。
[ミッション]
・配列変数 $str_araay があり
・その値の末尾にsをつけた $str_array + s がある
(例)
$name_items = Array("umi","yama","kawa");
とあり
$umis =Array("日本海","太平洋","大西洋");
$yamas =Array("富士山","白根山","浅間山");
$kawas =Array("利根川","荒川","多摩川");
である
・その値の末尾にsをつけた $str_array + s がある
(例)
$name_items = Array("umi","yama","kawa");
とあり
$umis =Array("日本海","太平洋","大西洋");
$yamas =Array("富士山","白根山","浅間山");
$kawas =Array("利根川","荒川","多摩川");
である
これを利用したリストループから値を取り出す
[今まで]
forループ内の時
eval('$tempVal='.$name_items.'s['.$n.'];');
eval('$tempVal='.$name_items.'s['.$n.'];');
などのようにして 取り出していた
[エラー]
Parse error: parse error, unexpected '[' in *******.php(52) : eval()'d code on line 1
※環境の違いによりうまくいったり行かなかったり・・・
もちろんそれぞれの変数内の値は空でないことを事前にチェック
いろいろ調べて・・・少し疲れた。
[方針変更]
foreachループ に変更し
foreach ($name_items as $val) {
$tempVal ="";
if($val!=''){
$tempstr = $val."s";
$temparray = $$tempstr;
}
}
$tempVal ="";
if($val!=''){
$tempstr = $val."s";
$temparray = $$tempstr;
}
}
で取り出せた。
不本意ではあるが、一応記録。