Skip to content
Advertisement

how to increment the values of keys in associative array as string

I have a condition to increment the array keys in such a way that each array key is to get increment. Only this part should get updated with the incremented number “LV001_LV002” to “LV099_LV100”.(But not only up to 100 it get increment above 100 also).

i have developed the below structure of array:

`array:2 [
"Level1" => array:3 [
"LV001_LV002" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV003_LV004" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV005_LV006" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
]
"Level2" => array:3 [
 "LV001_LV002" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV003_LV004" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV005_LV006" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
]
]`

In above many level1 to (n)levels… will be coming, So how i can do this. we have to change only this part as the serial number “LV001_LV002” up to “LVxxx_LVxxx”.

I want the result should be like this:

`[
 "LV001_LV002" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV003_LV004" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV005_LV006" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
 "LV007_LV008" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV009_LV010" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
"LV011_LV012" => array:5 [
  "L1" => "string"
  "L2" => "string"
  "L3" => "string"
  "L4" => "string"
  "L5" => "string"
]
]`

how can I do that?

Advertisement

Answer

You can do it like this,

<?php
$mainArray = [
    "Level1" => [
        "LV001_LV002" =>  [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ],
        "LV003_LV004" => [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ],
        "LV005_LV006" => [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ]
    ],
    "Level2" => [
         "LV001_LV002" => [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ],
        "LV003_LV004" => [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ],
        "LV005_LV006" => [
          "L1" => "string",
          "L2" => "string",
          "L3" => "string",
          "L4" => "string",
          "L5" => "string",
        ]
    ]
];
$newArray = [];
$indexCount = 1;// Array index
foreach ($mainArray as $array) {
    foreach ($array as $key=>$value) {
        // Generate index
        $index = "LV" . str_pad($indexCount++, 3, '0', STR_PAD_LEFT) . "_LV" . str_pad($indexCount++, 3, '0', STR_PAD_LEFT);
        $newArray[$index] = $value;// Store with generated index
    }
}
print_r($newArray);// To see the output

Output:

Array
(
    [LV001_LV002] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )

    [LV003_LV004] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )

    [LV005_LV006] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )

    [LV007_LV008] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )

    [LV009_LV010] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )

    [LV011_LV012] => Array
        (
            [L1] => string
            [L2] => string
            [L3] => string
            [L4] => string
            [L5] => string
        )
)

str_pad

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement