1

I have a string composed like this:

87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||

The pattern is:
Id1|Mq1|Q.ta1|Tipo1#Id2|Mq2|Q.ta2|Tipo2#Id3|Mq3|Q.ta3|Tipo3 and so on...

Basically each item has 4 attributes separated by "|" and each item is separated by "#"

I'd need to explode the string to have single variables for each item's attributes.

As for now I'm here:

<?php
$str = "87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||#36|||91#29|||68";
$caratteristica = print_r (explode("#",$str));
?>

Which gave me this result:

Array ( [0] => 87||1|nuovo [1] => 88||4| [2] => 209||| [3] => 89||| [4] => 41||1| [5] => 5||| [6] => 3||1|116 [7] => 20||| [8] => 13||3| [9] => 148||| [10] => 36|||91 [11] => 29|||68 ) 

I'd need four variables for each element of this array
( something like $id[], $mq[],$qt[],$tipo[] ).

user3666197
  • 1
  • 6
  • 50
  • 92

3 Answers3

1
<?php
$input = '87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||';
$items = explode('#', $input);
$result = [];
# or $id = $mq = $qr = $tipo = [];
foreach ($items as $i) {
  list($id, $mq, $qr, $tipo) = explode('|', $i);
  $result[] = ['id' => $id, 'mq' => $mq, 'qr' => $qr, 'tipo' => $tipo];
  # or $id[] = $id; $mq[] = $mq; $qr[] = $qr; $tipo[] = $tipo;
}
Jirka Hrazdil
  • 3,983
  • 1
  • 14
  • 17
0

Sight change to Jiri's code.

Replace this line

list($id, $mq, $qr, $tipo) = explode('|', $i);

with

list($id[], $mq[], $qr[], $tipo[]) = explode('|', $i);
0

Try following code

    $str = "87||1|nuovo#88||4|#209|||#89|||#41||1|#5|||#3||1|116#20|||#13||3|#148|||#36|||91#29|||68";
$caratteristica = explode("#",$str);

foreach ($caratteristica as $value) {
 list($id[], $mq[], $qr[], $tipo[]) = explode('|', $value);
}

// For check the result
echo "<pre/>";
print_r($id);

print_r($mq);

print_r($qr);

print_r($tipo);

I got following answer

    Array
(
    [0] => 87
    [1] => 88
    [2] => 209
    [3] => 89
    [4] => 41
    [5] => 5
    [6] => 3
    [7] => 20
    [8] => 13
    [9] => 148
    [10] => 36
    [11] => 29
)
Array
(
    [0] => 
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 
    [7] => 
    [8] => 
    [9] => 
    [10] => 
    [11] => 
)
Array
(
    [0] => 1
    [1] => 4
    [2] => 
    [3] => 
    [4] => 1
    [5] => 
    [6] => 1
    [7] => 
    [8] => 3
    [9] => 
    [10] => 
    [11] => 
)
Array
(
    [0] => nuovo
    [1] => 
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => 116
    [7] => 
    [8] => 
    [9] => 
    [10] => 91
    [11] => 68
)
Elby
  • 1,624
  • 3
  • 23
  • 42