2

スニペット:

$temp = array();
foreach ($data as $key => $value) {
    // This line varies, from HTML to URLs, to anything in between
    array_push($temp, "<b>$key:</b> $value"); 
}
$request = implode('<br/>', $temp); // Glue also varies depending on needs
unset($temp);

これは通常からの逃走$string .= 'blah<br/>'です。気にしないでくださいrtrim

一時配列を使用せず、おそらくループなしで上記を達成するためのより良い方法を誰かに教えてもらえますか? 関数で上記のコードを使用しないことのボーナスポイントですが、ラムダは受け入れられます。

PSこの質問を書いているときに、私は素晴らしいhttp_build_query(). 1 つダウン、1 つ行く。

編集:

結果は次のようになります。

<b>Title: </b> Value</br>
<b>Title2: </b> Value2</br>
<b>Title3: </b> Value3

または別の設定で (必須ではありませんが、可能性を示します):

key=value&key2=value2&key3=value3

コードを改善しようとしています。上記のスニペットをどこでも使用しています。

4

3 に答える 3

1

これは一つの方法だと思います。「ワンライナー」のイェーイ:

$data = ...;

echo join("\n", array_map(function($key) use ($data) {
    return sprintf('<b>%s:</b> %s',
        htmlspecialchars($key, ENT_QUOTES, 'UTF-8'),
        htmlspecialchars($data[$key], ENT_QUOTES, 'UTF-8')
    );
}, array_keys($data)));

基本的に、元の配列もバインドするクロージャーを使用してキーをマップし、各呼び出しでキーと値の両方にアクセスできるようにします。

于 2013-06-28T10:26:31.657 に答える
1

私の答え: いくつかの方法がありますが:

ループと配列は、プログラマーの親友です。

それらは非常に読みやすく、再利用可能であり、一般に、ほぼ同じアクションを実行するための正しい方法であると考えられています。

array_mapまたはを参照することもできますarray_walk。コードは少ないですが、とにかくループです。

array_walk($data, function($value, $key){
  $temp[] = "<b>{$key}:</b> {$value}" ;  //Shorthand for array_push is $arr[] = $value ;
}) ;
于 2013-06-28T10:16:58.003 に答える