This is my first question, i have been able to solve many issues by using your forum, but I am coming for your help because i do not know how to solve my issue. I hope i will be understandable.
I want to convert a string to an array of array, but all my readings dit not help me to find a solution.
I have a string in this format
$string = "records[0].CardName=TEST records[0].CardNo=01234567 records[0].CreateTime=1566835406 records[0].Door=0 records[0].Method=1 records[0].Password= records[0].RecNo=1366 records[0].Status=1 records[0].URL= records[0].UserID=9901 records[1].CardName=TEST records[1].CardNo=01234567 records[1].CreateTime=1566851904 records[1].Door=0 records[1].Method=1 records[1].Password= records[1].RecNo=1368 records[1].Status=1 records[1].URL= records[1].UserID=9901";
So you can see that this is always the same structure and only values are modified, there is more than 2 repetition of this element, but to keep it readable i just put two of them. I want to have an array created when the records[X] changes and then put each element matching records[X] into this array.
I want to convert it as an array which would look like this.
Array
(
[0] => Array
(
[CardName] =>TEST
[CardNo] => 01234567
[CreateTime] => 1566835406
[Door] => 0
[Method] => 1
[Password] =>
[RecNo] => 1366
[Status] => 1
)
[1] => Array
(
[CardName] => TEST
[CardNo] => 01234567
[CreateTime] => 1566835406
[Door] => 0
[Method] => 1
[Password] =>
[RecNo] => 1366
[Status] => 1
)
)
The goal is to access the last element of the array and to be precise the value CreateTime like this : end($array)['CreateTime'].
What I have try does not help me and i am stuck with no idea on how to deal with that issue.
$array = preg_split('/\s+/',$string);
if(is_array($array) {
print_r($array);
}
// Gives me this :
Array
(
[0] => records[0].CardName=TEST
[1] => records[0].CardNo=01234567
[2] => records[0].CreateTime=1566835406
[3] => records[0].Door=0
[4] => records[0].Method=1
[5] => records[0].Password=
[6] => records[0].RecNo=1366
[7] => records[0].Status=1
[8] => records[1].CardName=TEST
[9] => records[1].CardNo=01234567
[10] => records[1].CreateTime=1566835508
[11] => records[2].Door=0
[12] => records[3].Method=1
[13] => records[4].Password=
[14] => records[5].RecNo=1366
[15] => records[6].Status=1
)
I have also tried something like that with multiple different delimiter with no success
function multiexplode ($delimiters,$string) {
$ary = explode($delimiters[0],$string);
array_shift($delimiters);
if($delimiters != NULL) {
foreach($ary as $key => $val) {
$ary[$key] = multiexplode($delimiters, $val);
}
}
return $ary;
}
// Example of use
$string = "records[0].CardName=APKO records[0].CardNo=88043527 records[0].CreateTime=1566835406 records[0].Door=0 records[0].Method=1 records[0].Password= records[0].RecNo=1366 records[0].Status=1 records[0].URL= records[0].UserID=9901 records[1].CardName=APKO records[1].CardNo=88043527 records[1].CreateTime=1566851904 records[1].Door=0 records[1].Method=1 records[1].Password= records[1].RecNo=1368 records[1].Status=1 records[1].URL= records[1].UserID=9901";
$delimiters = Array('/\s+/',".",'=');
$res = multiexplode($delimiters,$string);
print_r($res);
Thanks for your help. I hope there is something that can be done to achieve this.
TaG