ホームページ > バックエンド開発 > PHPチュートリアル > 再帰的addlashes関数を使用したエスケープ配列ソリューション

再帰的addlashes関数を使用したエスケープ配列ソリューション

WBOY
リリース: 2016-06-13 12:02:15
オリジナル
948 人が閲覧しました

再帰的 addslashes 関数を使用して配列をエスケープします
配列があり、これは多次元である可能性があります。たとえば、「再帰的 addlashes() を使用してエスケープしました。

では効果が得られませんでした。助けてください。
$arr=array('ii"',array('one'=>'ec"','two'=>5));
function t(&$arr){
foreach($arr as $v){
if(is_string($v)){
$arr[]=addslashes($v);
}else{
t($ v);
}
}
}
t($arr);
echo "

";<br />print_r ($arr);<br />echo '&lt ;/pre>';<br><br><br><br>フロントページは次のように出力されます<br>____________________________________________________________<br><br>警告: 無効ですD:AppServwwwindex.php の 22 行目で foreach() に指定された引数<br>Array<br>(<br> [0] => ii"<br> [1] => Array<br> ( [1] => ec"<br> [2] => 5<br> )<br><br> [2] => ii"<br> [3] => ii\"<br>)<br><br><br>- -----解決策----------------------<font color="#FF8000"></font>自分で比較してください<br><br><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush: php">$arr=array('ii"',array('one'=>'ec"','two'=>5),'aa"a');<br />function t(& $arr){<br />    foreach($arr as $k => $v){<br />        if(is_string($v)){<br />            $arr[$k] = addslashes($v);<br />        }else{<br />            $arr[$k] = t($v);<br />        }<br />    }<br />    return $arr;<br />}<br />t($arr);<br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($arr);<br />echo '
';
ログイン後にコピー

- -----解決策---------
$arr = array('ii"',array('one'=>"ec'",'two'=>5));<br />array_walk_recursive($arr, function(&$v) { $v = addslashes($v);} );<br />print_r($arr);<br />
ログイン後にコピー
Array<br />(<br />    [0] => ii\"<br />    [1] => Array<br />        (<br />            [one] => ec\'<br />            [two] => 5<br />        )<br /><br />)<br /><br />
ログイン後にコピー

----- -解決策---------------------- を次のように変更できます:

<br />function t(&$arr){<br />	foreach($arr as $key=>$v){<br />		if(is_string($v)){<br />			$arr[$key]=addslashes($v);<br />		}else{<br />			t($arr[$key]);<br />		}<br />	}<br />}<br />
ログイン後にコピー

-- ----解決策-----もう一度変更してください


<br />function t(&$arr){<br />    foreach($arr as $key=>$v){<br />        if(is_array($v)){<br />            t($arr[$key]);<br />        }else{<br />            $arr[$key]=addslashes($v);<br />		}<br />    }<br />}<br /> <br />$arr=array('ii"',array('one'=>'ec"','two'=>'5'));<br />t($arr);<br /><br />print_r($arr);<br />
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート