PHP में array के keys को reset करके 0 से शुरू होने वाले numeric keys बनाना।
विधि 1: array_values() (सबसे सरल)
<?php
$arr = ['p' => 150, 'q' => 100, 'r' => 120, 's' => 110];
echo "Before:\n";
var_dump($arr);
/*
array(4) {
["p"]=> string(3) "150"
["q"]=> string(3) "100"
["r"]=> string(3) "120"
["s"]=> string(3) "110"
}
*/
$reset = array_values($arr);
echo "After:\n";
var_dump($reset);
/*
array(4) {
[0]=> string(3) "150"
[1]=> string(3) "100"
[2]=> string(3) "120"
[3]=> string(3) "110"
}
*/
विधि 2: array_merge() (Side Effect)
<?php $arr = [5 => 'a', 8 => 'b', 10 => 'c']; // array_merge with empty array re-indexes numeric keys $reset = array_merge($arr); // या $reset = array_merge([], $arr); var_dump($reset); // [0 => 'a', 1 => 'b', 2 => 'c']
विधि 3: Custom Start Index के साथ
<?php
$arr = ['a' => 150, 'b' => 100, 'c' => 120];
// Start from index 10
$reset = array_combine(range(10, 10 + count($arr) - 1), array_values($arr));
var_dump($reset); // [10 => 150, 11 => 100, 12 => 120]
// Start from 'x' (alphabetic)
$reset = array_combine(
range('x', chr(ord('x') + count($arr) - 1)),
array_values($arr)
);
var_dump($reset); // ['x' => 150, 'y' => 100, 'z' => 120]
विधि 4: foreach Loop (Manual Control)
<?php
$arr = [8 => 'Ben', 4 => 'Kevin', 7 => 'Mark', 3 => 'Hanks'];
$reset = [];
$index = 0;
foreach ($arr as $value) {
$reset[$index++] = $value;
}
var_dump($reset); // [0 => 'Ben', 1 => 'Kevin', 2 => 'Mark', 3 => 'Hanks']
Multidimensional Arrays के लिए
<?php
$multi = [
['id' => 5, 'name' => 'A'],
['id' => 2, 'name' => 'B'],
['id' => 8, 'name' => 'C']
];
// केवल outer keys reset
$reset = array_values($multi);
// Deep reset (सभी levels)
function deepArrayValues($array) {
$result = array_values($array);
foreach ($result as &$value) {
if (is_array($value)) {
$value = deepArrayValues($value);
}
}
return $result;
}
कब उपयोग करें
| स्थिति | विधि |
|---|---|
| Simple re-index to 0, 1, 2... | array_values() |
| Custom start index | array_combine(range(...), array_values()) |
| Multiple arrays merge + re-index | array_merge(...) |
| Complex logic during reset | foreach loop |
| Nested arrays | Recursive function |
Performance Note
<?php $large = array_fill(0, 100000, 'test'); $large = array_combine(range(100000, 199999), $large); // Non-sequential keys $start = microtime(true); $reset = array_values($large); echo "Time: " . (microtime(true) - $start) * 1000 . "ms"; // ~1-2ms