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_* 函数,例如array_reduce,但这只会导致与您的解决方案相比更加复杂。

于 2013-07-01T00:01:43.603 回答