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;
}
This is the source of what i am trying to do:
- source: a11993b18486c13240388
- 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
add a comment |
This is the source of what i am trying to do:
- source: a11993b18486c13240388
- 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
add a comment |
This is the source of what i am trying to do:
- source: a11993b18486c13240388
- 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
This is the source of what i am trying to do:
- source: a11993b18486c13240388
- 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
php arrays regex
edited Nov 22 '18 at 13:45
Mohammad
16.1k123766
16.1k123766
asked Nov 22 '18 at 13:23
jhon danojhon dano
315118
315118
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
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
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
add a comment |
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>';
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
add a comment |
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);
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
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
add a comment |
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
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
add a comment |
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
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
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
add a comment |
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
add a comment |
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>';
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
add a comment |
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>';
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
add a comment |
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>';
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>';
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
add a comment |
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
add a comment |
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);
add a comment |
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);
add a comment |
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);
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);
answered Nov 22 '18 at 13:38
Parvej AlamParvej Alam
24118
24118
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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