使用php将String转换为数组

Recently I have been having an issue with converting a string to an array. My method might not be the best or I'm just missing something. Any help would be nice.

My array (this cannot be changed):

$lic = "[[`license_civ_driver`,1],[`license_civ_boat`,0],[`license_civ_pilot`,0],[`license_civ_trucking`,0],[`license_civ_gun`,1],[`license_civ_dive`,0],[`license_civ_home`,0],[`license_civ_oil`,0],[`license_civ_diamond`,0],[`license_civ_salt`,0],[`license_civ_sand`,0],[`license_civ_iron`,0],[`license_civ_copper`,0],[`license_civ_cement`,0],[`license_civ_medmarijuana`,0],[`license_civ_cocaine`,0],[`license_civ_heroin`,0],[`license_civ_marijuana`,0],[`license_civ_rebel`,0]]"; 

The result I need:

'license_civ_driver' => '1', 'license_civ_boat' => '0', 'license_civ_pilot' => '0', 'license_civ_trucking' => '0', 'license_civ_gun' => '1', 'license_civ_dive' => '0', 'license_civ_home' => '0', 'license_civ_oil' => '0', 'license_civ_diamond' => '0', 'license_civ_salt' => '0', 'license_civ_sand' => '0', 'license_civ_iron' => '0', 'license_civ_copper' => '0', 'license_civ_cement' => '0', 'license_civ_medmarijuana' => '0', 'license_civ_cocaine' => '0', 'license_civ_heroin' => '0', 'license_civ_marijuana' => '0', 'license_civ_rebel' => '0'

Here is what I'm currently doing

$lic = str_replace('[', "", $lic);
$lic = str_replace(']', "", $lic);
$lic = str_replace('"', "", $lic);
$lic = str_replace(',1', " => '1'", $lic);
$lic = str_replace(',0', " => '0'", $lic);
// $licenses = str_replace('0,', " ", $licenses);
$lic = str_replace(',', ', ', $lic);
$lic = str_replace('`', "'", $lic);

The result:

'license_civ_driver' => '1', 'license_civ_boat' => '0', 'license_civ_pilot' => '0', 'license_civ_trucking' => '0', 'license_civ_gun' => '1', 'license_civ_dive' => '0', 'license_civ_home' => '0', 'license_civ_oil' => '0', 'license_civ_diamond' => '0', 'license_civ_salt' => '0', 'license_civ_sand' => '0', 'license_civ_iron' => '0', 'license_civ_copper' => '0', 'license_civ_cement' => '0', 'license_civ_medmarijuana' => '0', 'license_civ_cocaine' => '0', 'license_civ_heroin' => '0', 'license_civ_marijuana' => '0', 'license_civ_rebel' => '0'

However when converting this to an array the string it is classed as 1 value like this:

$lic = array("'license_civ_driver' => '1', 'license_civ_boat' => '0', 'license_civ_pilot' => '0', 'license_civ_trucking' => '0', 'license_civ_gun' => '1', 'license_civ_dive' => '0', 'license_civ_home' => '0', 'license_civ_oil' => '0', 'license_civ_diamond' => '0', 'license_civ_salt' => '0', 'license_civ_sand' => '0', 'license_civ_iron' => '0', 'license_civ_copper' => '0', 'license_civ_cement' => '0', 'license_civ_medmarijuana' => '0', 'license_civ_cocaine' => '0', 'license_civ_heroin' => '0', 'license_civ_marijuana' => '0', 'license_civ_rebel' => '0'");

However, I want it each value to be separated like this:

    $lic = array('license_civ_driver' => '1', 'license_civ_boat' => '0', 'license_civ_pilot' => '0', 'license_civ_trucking' => '0', 'license_civ_gun' => '1', 'license_civ_dive' => '0', 'license_civ_home' => '0', 'license_civ_oil' => '0', 'license_civ_diamond' => '0', 'license_civ_salt' => '0', 'license_civ_sand' => '0', 'license_civ_iron' => '0', 'license_civ_copper' => '0', 'license_civ_cement' => '0', 'license_civ_medmarijuana' => '0', 'license_civ_cocaine' => '0', 'license_civ_heroin' => '0', 'license_civ_marijuana' => '0', 'license_civ_rebel' => '0');

Is anyone able to help me with this issue? (I can provide any more informated you need, this is my first post so sorry if im brief.)

try this:

    $string ='license_civ_driver' => '1', 'license_civ_boat' => '0', 'license_civ_pilot' => '0', 'license_civ_trucking' => '0', 'license_civ_gun' => '1', 'license_civ_dive' => '0', 'license_civ_home' => '0', 'license_civ_oil' => '0', 'license_civ_diamond' => '0', 'license_civ_salt' => '0', 'license_civ_sand' => '0', 'license_civ_iron' => '0', 'license_civ_copper' => '0', 'license_civ_cement' => '0', 'license_civ_medmarijuana' => '0', 'license_civ_cocaine' => '0', 'license_civ_heroin' => '0', 'license_civ_marijuana' => '0', 'license_civ_rebel' => '0'
   $arr =  explode(',',$string);
 print_r($arr);

Simply exploding with comma will make it indexed array not associative array. So when fetching values from indexed array with key you will need to do some more operations. Example

Array
(
    [0] => 'license_civ_driver' => '1'
    [1] =>  'license_civ_boat' => '0'
    [2] =>  'license_civ_pilot' => '0'
    [3] =>  'license_civ_trucking' => '0'
    [4] =>  'license_civ_gun' => '1'
    [5] =>  'license_civ_dive' => '0'
    [6] =>  'license_civ_home' => '0'
    [7] =>  'license_civ_oil' => '0'
    [8] =>  'license_civ_diamond' => '0'
    [9] =>  'license_civ_salt' => '0'
    [10] =>  'license_civ_sand' => '0'
    [11] =>  'license_civ_iron' => '0'
    [12] =>  'license_civ_copper' => '0'
    [13] =>  'license_civ_cement' => '0'
    [14] =>  'license_civ_medmarijuana' => '0'
    [15] =>  'license_civ_cocaine' => '0'
    [16] =>  'license_civ_heroin' => '0'
    [17] =>  'license_civ_marijuana' => '0'
    [18] =>  'license_civ_rebel' => '0'
)

So, you can try this out.

$lic = explode(",", $lic);
$requried = [];

foreach ($lic as $temp) {
   $t = explode('=>', str_replace("'", "", trim($temp)));

    $required[$t[0]] = $t[1];
}

Now $required contains the associative array whose key and value you can get using foreach loop