ホームページ >バックエンド開発 >PHPチュートリアル >eval() については常に問題が発生します

eval() については常に問題が発生します

WBOY
WBOYオリジナル
2016-06-23 14:28:162652ブラウズ

php eval()

<?php//	$res="array('price'=>'400','name'=>'kuke','time'=>'1024')";$res="1+3";	var_dump($res);	$v=eval($res);	var_dump($v);	echo $v;	foreach($v as $key=>$val){		echo $key."=".$val;	}//-------------------------------------------echo "<br/>";//--------------------------------------------$res=array('price'=>'400','name'=>'kuke','time'=>'1024');	var_dump($res);	echo "<br/>";	foreach($res as $key=>$val){		echo $key."=".$val."<br>";	}

これが結果です
string(3) "1+3"
解析エラー: 構文エラー、D:mywebarray.php(5) の予期しない $end : eval() のコード1 行目
bool(false)
警告: 8 行目の D:mywebarray.php の foreach() に無効な引数が指定されました

array(3) { ["price"]=> string(3) "400" [" name "]=> string(4) "kuke" ["time"]=> string(4) "1024" }
価格=400
name=kuke
time=1024
理由を分析するのを手伝ってくれる人はいますか?間違えた?

ディスカッションへの返信 (解決策)

$v = eval("return $res;");


eval() NULL を返す 実行されたコードで値が返されない限り、関数は return に渡された値を返します。実行されたコードに解析エラーがある場合、eval() は FALSE を返し、後続のコードは正常に実行されます。 set_error_handler() を使用して eval() の解析エラーを捕捉できません。

定義と使用法

eval() 関数は、PHP コードに従って文字列を計算します。

文字列は正当な PHP コードである必要があり、セミコロンで終わる必要があります。

コード文字列内で return ステートメントが呼び出されない場合は、NULL が返されます。コードに解析エラーがある場合、eval() 関数は false を返します。
したがって、次のように記述します: $v=eval("return $res;");

警告: D:mywebarray.php の 8 行目の foreach() に指定された引数が無効です
このエラーは、foreach が配列を走査することしかできないためです。および Object の場合、渡した $v はブール値であるため、エラーが報告されます。

1.
$res="1+3";
eval("$v = "$res";");
var_dump($v)

2.
$v にはデータがありません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。