在print_r中向数组键添加数字


Adding numbers to array keys in print_r

我有一个数组,里面已经有这样的键和值:

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函数,不应用于其他任何事情!

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

不,这是不可能的。这就是print_r的作用。要做到这一点,您必须创建自己的自定义函数。

仍在使用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));

单独使用print_r()无法做到这一点,但您可以获取print_r($array, true)的输出,并尝试对其进行处理以获得您想要的结果。但这违背了print_r()的目的,因为它更容易编写该函数的自己版本,从而在源数组

上迭代正如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);

不过,这是一种变通方法。也许一开始就不应该做这样的事情。