3

私はこのphp配列を持っています:

$items = array (
    "Item 1" => "Value 1",
    "Item 2" => "Value 2",
    "Item 3" => "Value 3"
);

そして、これと同じことをする、聞いたことのないエレガントな PHP 関数があるかどうか疑問に思っています。

$output = "";
foreach ( $items as $key => $value ) {
    $output .= sprintf( "%s: %s\n" , $key , $value );
}
echo $output;

もちろん、どちらが出力されますか:

Item 1: Value 1
Item 2: Value 2
Item 3: Value 3

また、それを何と呼びますか?デシリアライゼーション?

4

2 に答える 2

7

機能は必ずありarray_walkます。例は次のようになります。

function test_print($value, $key) {
    echo sprintf( "%s: %s\n" , $key , $value );
}

$items = array (
    "Item 1" => "Value 1",
    "Item 2" => "Value 2",
    "Item 3" => "Value 3"
);

array_walk($items, 'test_print');

array_walk($items, 'test_print');関数を定義したら、コード全体で必要に応じて再利用できます。

array_walk_recursive多次元配列を扱っている場合は、関数もあります。

于 2013-07-01T01:47:40.897 に答える
1

連結演算子がないことを除いて、ソリューションに問題はありません。

$output = "";
foreach ( $items as $key => $value ) {
    $output .= sprintf( "%s: %s\n" , $key , $value );
}
echo $output;

これは一次元配列のみを扱うことに注意してください。

PHP には非常に多くの組み込み関数があるため、実際にコードを作成する必要があることを忘れてしまうことがあります。array_reduce などのarray_ * 関数のいずれかを使用できることがコメントで言及されていましたが、それはソリューションと比較してより複雑になるだけです。

于 2013-07-01T00:01:43.603 に答える