I'm lost... I try to make an associative array from my string... But nothing work and I dont know, where is problem.
My string looks like
$string = "somethink;452;otherthink;4554;somethinkelse;4514"
And i would like to make an associative array, where "text" is name, and number is value....
Somethink => 452 otherthink => 4554 Somethinkelse => 4514
I try to convert string into array and than to the associative array but its not working... So i decide to use
$array=explode(";",$string);
then try to make an foreach cycle but its not work again... can somebody help? Thx a lot
Using regex and array_combine
:
$string = "somethink;452;otherthink;4554;somethinkelse;4514";
preg_match_all("'([A-Za-z]+);(\d+)'", $string, $matches);
$assoc = array_combine($matches[1], $matches[2]);
print_r($assoc);
Using a traditional for loop:
$string = "somethink;452;otherthink;4554;somethinkelse;4514";
$arr = explode(";", $string);
for ($i = 0; $i < count($arr); $i += 2) {
$assoc[$arr[$i]] = $arr[$i+1];
}
print_r($assoc);
Result:
Array
(
[somethink] => 452
[otherthink] => 4554
[somethinkelse] => 4514
)
Note that there must be an even number of pairs; you can add a conditional to test this and use some substitute for any missing keys.
Here's a repl.