質問: 項目の出力について テーブルの構造がaa,bb,ccとして 項目aaには"xx" bbには"yy" ccには$aa . "-" . $bbが入力されている場合 ccをechoで出力した場合 xx-yyとするようにはどうすればいいでしょうか? わざわざccに入れている理由がありますので 出力する方法を教えていただけますでしょうか。
回答: 危険性を承知の上で eval を使うしかないですかねぇ・・・ $row['aa'] = 'xx'; $row['bb'] = 'yy'; $row['cc'] = '$aa . "-" . $bb'; と格納されているなら、 $aa = $row['aa']; $bb = $row['bb']; eval("echo " . $row['cc'] . ";"); とするしかないように思います。$aa や $bb が(どのカラムが指定されているか)決まっていないと foreach ($row as $k=>$v) $$k = $v; のように可変変数を使うことになりますが、そういうことはありませんよね(さすがに可変変数 + eval なんて設計がおかしいとしか・・・)。 というか、出来る限りevalも使いたくないので、$row['cc'] へ格納する文字列を '$aa-$bb' のようにしておいて、 echo str_replace(['$aa', '$bb'], [$row['aa'], $row['bb']], $row['cc']); とした方がいいとは思います。これなら、$aa とか $bb でなく aa や bb でも(あるいは /aa/ や /bb/ でも)置換対象として区別できるなら問題ないです。