How to convert an array has special structure into an array of key-value pairs using PHP?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







-3















This is the source of what i am trying to do:




  1. source: a11993b18486c13240388

  2. What i vae done so far:


$array = preg_split("/(,?s+)|((?<=[a-z])(?=d))|((?<=d)(?=[a-z]))/i", $ref);


I am trying to convert the resulting $array into an object:



[
"a",
"11993",
"b",
"18486",
"c",
"13240388"
]


by grouping by 2 where first item is key and second is value:
Following is my desired outcome:



{
"a"=>"11993",
"b"=>"18486",
"c"=>"13240388"
}


Maybe there is even a better way to do that?
I would appreciate if someone kindly guide me about that.










share|improve this question































    -3















    This is the source of what i am trying to do:




    1. source: a11993b18486c13240388

    2. What i vae done so far:


    $array = preg_split("/(,?s+)|((?<=[a-z])(?=d))|((?<=d)(?=[a-z]))/i", $ref);


    I am trying to convert the resulting $array into an object:



    [
    "a",
    "11993",
    "b",
    "18486",
    "c",
    "13240388"
    ]


    by grouping by 2 where first item is key and second is value:
    Following is my desired outcome:



    {
    "a"=>"11993",
    "b"=>"18486",
    "c"=>"13240388"
    }


    Maybe there is even a better way to do that?
    I would appreciate if someone kindly guide me about that.










    share|improve this question



























      -3












      -3








      -3


      0






      This is the source of what i am trying to do:




      1. source: a11993b18486c13240388

      2. What i vae done so far:


      $array = preg_split("/(,?s+)|((?<=[a-z])(?=d))|((?<=d)(?=[a-z]))/i", $ref);


      I am trying to convert the resulting $array into an object:



      [
      "a",
      "11993",
      "b",
      "18486",
      "c",
      "13240388"
      ]


      by grouping by 2 where first item is key and second is value:
      Following is my desired outcome:



      {
      "a"=>"11993",
      "b"=>"18486",
      "c"=>"13240388"
      }


      Maybe there is even a better way to do that?
      I would appreciate if someone kindly guide me about that.










      share|improve this question
















      This is the source of what i am trying to do:




      1. source: a11993b18486c13240388

      2. What i vae done so far:


      $array = preg_split("/(,?s+)|((?<=[a-z])(?=d))|((?<=d)(?=[a-z]))/i", $ref);


      I am trying to convert the resulting $array into an object:



      [
      "a",
      "11993",
      "b",
      "18486",
      "c",
      "13240388"
      ]


      by grouping by 2 where first item is key and second is value:
      Following is my desired outcome:



      {
      "a"=>"11993",
      "b"=>"18486",
      "c"=>"13240388"
      }


      Maybe there is even a better way to do that?
      I would appreciate if someone kindly guide me about that.







      php arrays regex






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 22 '18 at 13:45









      Mohammad

      16.1k123766




      16.1k123766










      asked Nov 22 '18 at 13:23









      jhon danojhon dano

      315118




      315118
























          3 Answers
          3






          active

          oldest

          votes


















          1














          You need to loop through array using for and in loop add values to new array.



          $newArr = ;
          for ($i=0; $i<count($arr); $i+=2)
          $newArr[$arr[$i]] = $arr[$i+1];


          Result



          Array
          (
          [a] => 11993
          [b] => 18486
          [c] => 13240388
          )


          Check result in demo





          Also if you want to do this using regex on string use



          $ref = "a11993b18486c13240388";
          preg_match_all("/([a-z])(d+)/i", $ref, $matches);
          $newArr = array_combine($matches[1], $matches[2]);


          Check result in demo






          share|improve this answer


























          • this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

            – jhon dano
            Nov 22 '18 at 13:37











          • @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

            – Mohammad
            Nov 22 '18 at 13:41













          • i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

            – jhon dano
            Nov 22 '18 at 13:43











          • @jhondano Check update

            – Mohammad
            Nov 22 '18 at 13:49



















          0














          try following :



          $list = array(
          "a",
          "11993",
          "b",
          "18486",
          "c",
          "13240388"

          );

          $new_list = array();

          for($i=0;$i<count($list);$i=$i+2) {

          $new_list[$list[$i]] = $list[$i+1];

          }

          echo '<pre>'; print_r($new_list); echo '</pre>';





          share|improve this answer
























          • This is exact duplicate of my answer.

            – Mohammad
            Nov 22 '18 at 13:34











          • yes but seen after posting answer

            – Manoj Singh
            Nov 22 '18 at 13:36



















          0














          i hope answer to your question is this, because you are looking for object:-



          $arr=[
          "a",
          "11993",
          "b",
          "18486",
          "c",
          "13240388"
          ];

          $arrForObj = ;
          for ($i=0; $i<count($arr); $i+=2){
          $arrForObj[$arr[$i]] = $arr[$i+1];
          }

          $obj=(object)$arrForObj;
          echo "<pre>";
          var_dump($obj);





          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431973%2fhow-to-convert-an-array-has-special-structure-into-an-array-of-key-value-pairs-u%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            3 Answers
            3






            active

            oldest

            votes








            3 Answers
            3






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You need to loop through array using for and in loop add values to new array.



            $newArr = ;
            for ($i=0; $i<count($arr); $i+=2)
            $newArr[$arr[$i]] = $arr[$i+1];


            Result



            Array
            (
            [a] => 11993
            [b] => 18486
            [c] => 13240388
            )


            Check result in demo





            Also if you want to do this using regex on string use



            $ref = "a11993b18486c13240388";
            preg_match_all("/([a-z])(d+)/i", $ref, $matches);
            $newArr = array_combine($matches[1], $matches[2]);


            Check result in demo






            share|improve this answer


























            • this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

              – jhon dano
              Nov 22 '18 at 13:37











            • @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

              – Mohammad
              Nov 22 '18 at 13:41













            • i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

              – jhon dano
              Nov 22 '18 at 13:43











            • @jhondano Check update

              – Mohammad
              Nov 22 '18 at 13:49
















            1














            You need to loop through array using for and in loop add values to new array.



            $newArr = ;
            for ($i=0; $i<count($arr); $i+=2)
            $newArr[$arr[$i]] = $arr[$i+1];


            Result



            Array
            (
            [a] => 11993
            [b] => 18486
            [c] => 13240388
            )


            Check result in demo





            Also if you want to do this using regex on string use



            $ref = "a11993b18486c13240388";
            preg_match_all("/([a-z])(d+)/i", $ref, $matches);
            $newArr = array_combine($matches[1], $matches[2]);


            Check result in demo






            share|improve this answer


























            • this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

              – jhon dano
              Nov 22 '18 at 13:37











            • @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

              – Mohammad
              Nov 22 '18 at 13:41













            • i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

              – jhon dano
              Nov 22 '18 at 13:43











            • @jhondano Check update

              – Mohammad
              Nov 22 '18 at 13:49














            1












            1








            1







            You need to loop through array using for and in loop add values to new array.



            $newArr = ;
            for ($i=0; $i<count($arr); $i+=2)
            $newArr[$arr[$i]] = $arr[$i+1];


            Result



            Array
            (
            [a] => 11993
            [b] => 18486
            [c] => 13240388
            )


            Check result in demo





            Also if you want to do this using regex on string use



            $ref = "a11993b18486c13240388";
            preg_match_all("/([a-z])(d+)/i", $ref, $matches);
            $newArr = array_combine($matches[1], $matches[2]);


            Check result in demo






            share|improve this answer















            You need to loop through array using for and in loop add values to new array.



            $newArr = ;
            for ($i=0; $i<count($arr); $i+=2)
            $newArr[$arr[$i]] = $arr[$i+1];


            Result



            Array
            (
            [a] => 11993
            [b] => 18486
            [c] => 13240388
            )


            Check result in demo





            Also if you want to do this using regex on string use



            $ref = "a11993b18486c13240388";
            preg_match_all("/([a-z])(d+)/i", $ref, $matches);
            $newArr = array_combine($matches[1], $matches[2]);


            Check result in demo







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 22 '18 at 13:49

























            answered Nov 22 '18 at 13:28









            MohammadMohammad

            16.1k123766




            16.1k123766













            • this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

              – jhon dano
              Nov 22 '18 at 13:37











            • @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

              – Mohammad
              Nov 22 '18 at 13:41













            • i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

              – jhon dano
              Nov 22 '18 at 13:43











            • @jhondano Check update

              – Mohammad
              Nov 22 '18 at 13:49



















            • this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

              – jhon dano
              Nov 22 '18 at 13:37











            • @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

              – Mohammad
              Nov 22 '18 at 13:41













            • i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

              – jhon dano
              Nov 22 '18 at 13:43











            • @jhondano Check update

              – Mohammad
              Nov 22 '18 at 13:49

















            this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

            – jhon dano
            Nov 22 '18 at 13:37





            this worked perfect, thanks! I was wondering if the same can be achieved through the regular expression so i can reduce it to just one line of code?

            – jhon dano
            Nov 22 '18 at 13:37













            @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

            – Mohammad
            Nov 22 '18 at 13:41







            @jhondano Your content is in array but regex work on string. You should convert array to string and run regex and prepare target structure that cause write multiple line of code

            – Mohammad
            Nov 22 '18 at 13:41















            i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

            – jhon dano
            Nov 22 '18 at 13:43





            i understand that but as you see in my question the source is string: a11993b18486c13240388, this needs to be split and grouped according to your example with for. Any idea how?

            – jhon dano
            Nov 22 '18 at 13:43













            @jhondano Check update

            – Mohammad
            Nov 22 '18 at 13:49





            @jhondano Check update

            – Mohammad
            Nov 22 '18 at 13:49













            0














            try following :



            $list = array(
            "a",
            "11993",
            "b",
            "18486",
            "c",
            "13240388"

            );

            $new_list = array();

            for($i=0;$i<count($list);$i=$i+2) {

            $new_list[$list[$i]] = $list[$i+1];

            }

            echo '<pre>'; print_r($new_list); echo '</pre>';





            share|improve this answer
























            • This is exact duplicate of my answer.

              – Mohammad
              Nov 22 '18 at 13:34











            • yes but seen after posting answer

              – Manoj Singh
              Nov 22 '18 at 13:36
















            0














            try following :



            $list = array(
            "a",
            "11993",
            "b",
            "18486",
            "c",
            "13240388"

            );

            $new_list = array();

            for($i=0;$i<count($list);$i=$i+2) {

            $new_list[$list[$i]] = $list[$i+1];

            }

            echo '<pre>'; print_r($new_list); echo '</pre>';





            share|improve this answer
























            • This is exact duplicate of my answer.

              – Mohammad
              Nov 22 '18 at 13:34











            • yes but seen after posting answer

              – Manoj Singh
              Nov 22 '18 at 13:36














            0












            0








            0







            try following :



            $list = array(
            "a",
            "11993",
            "b",
            "18486",
            "c",
            "13240388"

            );

            $new_list = array();

            for($i=0;$i<count($list);$i=$i+2) {

            $new_list[$list[$i]] = $list[$i+1];

            }

            echo '<pre>'; print_r($new_list); echo '</pre>';





            share|improve this answer













            try following :



            $list = array(
            "a",
            "11993",
            "b",
            "18486",
            "c",
            "13240388"

            );

            $new_list = array();

            for($i=0;$i<count($list);$i=$i+2) {

            $new_list[$list[$i]] = $list[$i+1];

            }

            echo '<pre>'; print_r($new_list); echo '</pre>';






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 22 '18 at 13:32









            Manoj SinghManoj Singh

            23016




            23016













            • This is exact duplicate of my answer.

              – Mohammad
              Nov 22 '18 at 13:34











            • yes but seen after posting answer

              – Manoj Singh
              Nov 22 '18 at 13:36



















            • This is exact duplicate of my answer.

              – Mohammad
              Nov 22 '18 at 13:34











            • yes but seen after posting answer

              – Manoj Singh
              Nov 22 '18 at 13:36

















            This is exact duplicate of my answer.

            – Mohammad
            Nov 22 '18 at 13:34





            This is exact duplicate of my answer.

            – Mohammad
            Nov 22 '18 at 13:34













            yes but seen after posting answer

            – Manoj Singh
            Nov 22 '18 at 13:36





            yes but seen after posting answer

            – Manoj Singh
            Nov 22 '18 at 13:36











            0














            i hope answer to your question is this, because you are looking for object:-



            $arr=[
            "a",
            "11993",
            "b",
            "18486",
            "c",
            "13240388"
            ];

            $arrForObj = ;
            for ($i=0; $i<count($arr); $i+=2){
            $arrForObj[$arr[$i]] = $arr[$i+1];
            }

            $obj=(object)$arrForObj;
            echo "<pre>";
            var_dump($obj);





            share|improve this answer




























              0














              i hope answer to your question is this, because you are looking for object:-



              $arr=[
              "a",
              "11993",
              "b",
              "18486",
              "c",
              "13240388"
              ];

              $arrForObj = ;
              for ($i=0; $i<count($arr); $i+=2){
              $arrForObj[$arr[$i]] = $arr[$i+1];
              }

              $obj=(object)$arrForObj;
              echo "<pre>";
              var_dump($obj);





              share|improve this answer


























                0












                0








                0







                i hope answer to your question is this, because you are looking for object:-



                $arr=[
                "a",
                "11993",
                "b",
                "18486",
                "c",
                "13240388"
                ];

                $arrForObj = ;
                for ($i=0; $i<count($arr); $i+=2){
                $arrForObj[$arr[$i]] = $arr[$i+1];
                }

                $obj=(object)$arrForObj;
                echo "<pre>";
                var_dump($obj);





                share|improve this answer













                i hope answer to your question is this, because you are looking for object:-



                $arr=[
                "a",
                "11993",
                "b",
                "18486",
                "c",
                "13240388"
                ];

                $arrForObj = ;
                for ($i=0; $i<count($arr); $i+=2){
                $arrForObj[$arr[$i]] = $arr[$i+1];
                }

                $obj=(object)$arrForObj;
                echo "<pre>";
                var_dump($obj);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 22 '18 at 13:38









                Parvej AlamParvej Alam

                24118




                24118






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431973%2fhow-to-convert-an-array-has-special-structure-into-an-array-of-key-value-pairs-u%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)