機能を共有したり、バグや改善を求めたりしてください^_^
PHPer では、数値や文字列の処理関数をよく使用します
残念ながら、それらのほとんどは配列をサポートしていません
ひらめきがあったので、考え出しました
役に立ったと思ったら、サポートしてください
ちなみに、いくつかのバグを見つけてフィードバックを提供します 改善のための提案
/** * 通过递归调用让函数支持多维数组 by wanderwind * 建议其他函数调用来实现 * @param string $fn 调用函数名称 * @param array $param 参数数组,通常传入func_get_args() * @param int $key 需要递归的参数键值 * @param boolean $check 是否需要检测函数合法性 * @return mixed 返回对$param[$key]的运行结果 */function fn2array($fn, $param, $key = 0, $check = true) { //从外部调用时默认检测函数合法性,多维数组递归时忽略 if ($check && !function_exists($fn)) { return false; } //提取执行目标,如果目标非数组可以直接执行 $content = $param[$key]; if (!is_array($content)) { return call_user_func_array($fn, $param); } //如果目标是数组则递归执行 foreach ($content as &$val) { $param[$key] = $val; $val = fn2array($fn, $param, $key, false); } return $content;}function wstripslashes() { return fn2array('stripslashes', func_get_args());}function wsubstr() { $param = func_get_args(); $param[3] = isset($param[3]) ? $param[3] : 'utf-8'; return fn2array('mb_substr', $param, 0);}$a = array( 2 => '\"aaaaaaaaaaaaaaa\"', array('\"啊啊啊啊啊啊啊啊啊啊啊啊啊\"'), array(array(array('\"sss\dasf\dasfasdsad\"'))),);print_r(wstripslashes($a));print_r(wsubstr($a, 2, 5));
ディスカッションに返信 (解決策)
たとえば、投稿を投稿した後、改善の方向性を考えました。データベースから配列を取得し、特定のフィールドを個別にフィルタリングする必要がある場合があります
たとえば、タイトルとコンテンツでストリップスラッシュを個別に実行します
インターフェイスは wstripslashes($data, 'title,content') として設計できます
この場合、もう 1 つのステップキーの値を決定するために必要です
あなたは php の array_walk_recursive 関数を忘れました
あなたは php を忘れました array_walk_recursive 関数
にはマニュアルを読みたくない悪い癖があります
しかし、私はそれを閲覧しただけで、この関数はニーズを満たしていないかもしれないという大雑把な感触
1. 多次元配列をサポートするにはどうすればよいですか?
2. iconv('gbk', 'utf-8', $str) 関数を再帰的に使用するにはどうすればよいですか?
私はこの関数を使ったことがないので、Buzhu にサンプルを書いてもらう必要があるかもしれません
$ar = array( array('汉字'), array('汉字'), array( array('汉字'), array('汉字'), array( array('汉字'), array('汉字'), ), ),);function zm(&$v, $k, $charset) { $v = iconv($charset[0], $charset[1], $v);}array_walk_recursive($ar, 'zm', array('gbk', 'utf-8'));print_r($ar);
?? サポート。
$ar = array( array('汉字'), array('汉字'), array( array('汉字'), array('汉字'), array( array('汉字'), array('汉字'), ), ),);function zm(&$v, $k, $charset) { $v = iconv($charset[0], $charset[1], $v);}array_walk_recursive($ar, 'zm', array('gbk', 'utf-8'));print_r($ar);
ありがとう、xu、また勉強になりました
システムが提供する関数を使用するとパフォーマンスが向上する可能性があります
しかし、開発経験と組み合わせると、やはり独自のメソッドをサポートしたいです
array_walk_recursive は元のデータを参照します、 $ar を汚さず、開発者が使いやすいようにしたい場合は、別の関数を定義する必要があります
function zm(&$v, $k, $charset) { $v = iconv($charset[0], $charset[1], $v);}function wiconv($in, $out, $content) { array_walk_recursive($content, 'zm', array($in, $out)); return $content;}
実際、このような wiconv も機能しません。 $content自体が文字列であるという判定条件も追加する必要があります~
元の関数の使用習慣を変えずに新しい関数を素早く作成する方法があればいいのですが、ちょっとしたオブジェクト指向の継承のようです。アイデア?
たとえば、私のメソッドの iconv は次のように展開できます:
function wiconv() { //2代表递归第三个参数是目标 return fn2array('iconv', func_get_args(), 2);}$ar = array('汉字', array(array('汉字')));print_r(wiconv('utf-8', 'gbk', $ar)); //不改变原函数使用习惯
What do you think
?? サポート。
function wiconv($in_charset, $out_charset, $str) { if(is_array($str)) { array_walk_recursive($str, function(&$v, $k, $p) { $v = iconv($p[0], $p[1], $v); }, array($in_charset, $out_charset)); return $str; } return iconv($in_charset, $out_charset, $str);}
何度も車輪を再発明する者
という有名な言葉をまた思い出しました
関数の意味はよく分かりませんが、それでも入って見てみます
思い出しました有名な言葉をもう一度言います: ホイールを作る人は繰り返します
前のホイールは良くないので、より良いホイールを作ろうとしてください。たとえ実際にひどいものになったとしても、これはより良いホイールを作るための第一歩です〜。どう思いますか
🎜 ホイールを組み立てるのは悪いことではありません。適切な材料とテクニックを選択することによってのみ、半分の労力で 2 倍の結果を得ることができます。
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
