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

Rizier123
59.8k17 gold badges106 silver badges165 bronze badges
asked Nov 28, 2014 at 4:48
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);
answered Nov 28, 2014 at 4:51

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);
Hanky Panky
46.9k9 gold badges76 silver badges95 bronze badges
answered Nov 28, 2014 at 7:13

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));

answered Nov 28, 2014 at 4:53

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}
answered Nov 28, 2014 at 5:32

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.