将字符串转换为关联数组,或者将数组转换为关联数组

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.