在print_r中向数组键添加数字

时间:2013-12-12 15:59:54

标签: php arrays

我有一个数组,其中包含键和值,如下所示:

Array
(
    [username] => someUser
    [email] => my@email.com
    [points] => -1118
    [country] => 213
    [played] => 1121
    [win] => 556
    [paid] => 1
)

但是,当使用'pre'来创建一个print_r来添加这样的数字时,它是否可能?

Array
(
    [0][username] => someUser
    [1][email] => my@email.com
    [2][points] => -1118
    [3][country] => 213
    [4][played] => 1121
    [5][win] => 556
    [6][paid] => 1
)

这仅适用于print_r函数,不应用于其他任何内容!

希望得到帮助并提前感谢; - )

4 个答案:

答案 0 :(得分:2)

不,这是不可能的。 This是print_r的作用。您必须自己创建自定义函数才能执行此操作。

答案 1 :(得分:1)

仍在使用print_r:)

$a = ['username' => 'someUser', 'email' => 'my@email.com'];

echo preg_replace_callback('/\[(.+?)\]\s\=/', function($v) use (&$_) { return '[' . (++$_ - 1) . "]$v[0]"; }, print_r($a, 1));

答案 2 :(得分:0)

单独使用print_r()无法执行此操作,但您可以获取print_r($array, true)的输出,并尝试处理它以获得所需内容。但这违背了print_r()的目的,因为编写遍历源数组的函数的自己版本会更容易

答案 3 :(得分:0)

正如veelen指出的那样,print_r是一种以人类可读的格式将数组内容转储到屏幕的工具。 print_r不允许更改格式。

你可以像这样敲门:

function print_r_indexed($array) {
    $i = 0;
    foreach ( $array as $key => $val ) {
        echo "[$i][" . $key . "] => " . $val;
        $i++;
    }
}

然后调用上面的函数

$myArray = array ('a' => 1, 'b' => 2, 'c' => 3, 'email' => 'example@test.com' );
print_r_indexed($myArray);

但是,这是一种解决方法。可能不应该首先做这些事情。