2013-12-12 2 views
0

У меня есть массив с уже ключами и значениями, как это:Добавление номеров ключам массива в print_r

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

Но это возможно при выполнении print_r с «предварительно» вокруг, чтобы добавить номера, как это?

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

Это только для функции print_r и не должно использоваться ни для чего другого!

Надеясь на помощь и заранее спасибо ;-)

+1

, что собираетесь достичь? – underscore

+0

№. не с print_r. вам придется взломать PHP-источник, чтобы заставить его это сделать. Вы можете свернуть свой собственный файл 'my_print_r' или захватить вывод print_r и взломать числа. в любом случае, не очень весело. –

ответ

2

Нет, это невозможно. This - это, что print_r делает. Для этого вам нужно будет сделать свою собственную пользовательскую функцию.

0

Вы не можете сделать это только с print_r(), но вы можете получить вывод print_r($array, true) и попытаться обработать его, чтобы получить то, что вы хотите. Но это побеждает цель print_r(), так как было бы проще написать собственную версию этой функции, которая итератируется над вашим исходным массивом

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' => '[email protected]'); 
print_r_indexed($myArray); 

Однако это временное решение. Наверное, не следует делать такие вещи в первую очередь.

1

Тем не менее с помощью print_r :)

$a = ['username' => 'someUser', 'email' => '[email protected]']; 

echo preg_replace_callback('/\[(.+?)\]\s\=/', function($v) use (&$_) { return '[' . (++$_ - 1) . "]$v[0]"; }, print_r($a, 1));
Смежные вопросы