0

This is my php array:

Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17] => 0 [18] => 0 [19] => 0 [20] => 0 [21] => 0 [22] => 0 [23] => 0 [24] => 0 [25] => 0 [26] => 0 [27] => 0 [28] => 0 [29] => 0 [30] => 0 [31] => 0 [32] => 0 [33] => 0 [34] => 0 [35] => 0 [36] => 0 [37] => 0 [38] => 0 [39] => 0 [40] => 0 [41] => 0 [42] => 0 [43] => 0 [44] => 0 [45] => 0 [46] => 0 [47] => 0 [48] => 0 [49] => 0 [50] => 0 [51] => 0 [52] => 0 [53] => 0 [54] => 0 [55] => 0 [56] => 0 [57] => 0 [58] => 0)

i want to change it as following:

Array (  [59] => 0 [60] => 0 [61] => 0 [62] => 0 [63] => 0 [64] => 0 [65] => 0 [66] => 0 [67] => 0 [68] => 0 [69] => 0 [70] => 0 [71] => 0 [72] => 0 [73] => 0 [74] => 0 [75] => 0 [76] => 0 [77] => 0 [78] => 0 [79] => 0 [80] => 0 [81] => 0 [82] => 0 [83] => 0 [84] => 0 [85] => 0 [86] => 0 [87] => 0 [88] => 0 [89] => 0 [90] => 0 [91] => 0 [92] => 0 [93] => 0 [94] => 0 [95] => 0 [96] => 0 [97] => 0 [98] => 0 [99] => 0 [100] => 0 [101] => 0 [102] => 0 [103] => 0 [104] => 0 [105] => 0 [106] => 0 [107] => 0 [108] => 0 [109] => 0 [110] => 0 [111] => 0 [112] => 0 [113] => 0 [114] => 0 [115] => 0 [116] => 0)

need it as a new array begin with 59

2
  • 1
    Have you tried anything? Commented Nov 28, 2014 at 4:50
  • You would have to build new array with desired keys inserting old values. Commented Nov 28, 2014 at 4:51

4 Answers 4

5
$newArray=array();
foreach($array as $key=>$value)
{
  $newArray[$key+59]=$value;
}
print_r($newArray);
Sign up to request clarification or add additional context in comments.

2 Comments

It looks incomplete without array initialization. :^ )
Although that wasn't required but i just added it for your nicely worded comment :)
1

it should be dynamic, I will not use "+59" as it will act as static.
Try this:

$oldArray = Array ( [0] => 0 [1] => 0 [2] => 0 .... [57] => 0 [58] => 0)

Now will find the last key of array.you can do this by many ways eg:

function lastKey($anyArray){
   end($anyArray);
   return key($anyArray);
}

$lastKey = lastkey($oldArray); //Last key of the old array i.e. in your case 58.

$newArray=array();
$newKeyOffset = $lastKey+1;
foreach($oldArray as $key=>$value)
{
   $newArray[$key+$newkeyoffset]=$value;
}
print_r($newArray);

Comments

0

You could use array_combine with a new set of keys and the original values:

$new_array = array_combine(range(59, 59+count($array)-1), array_values($array));

Comments

0

If result array keys does not intersect with original array keys you could save the memory by using the same array.

$array = array_fill_keys(range(0, 58), 0); // creation of test array
foreach ($array as $key => $value)
    {
    unset($array[$key]);
    $array[$key + 59] = $value;
    }

echo json_encode($array); 
// {"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.