2016-10-22 10 views
3

最近、文字列を配列に変換する際に問題が発生しています。私の方法は最高ではないかもしれません。どんな助けもいいだろう。phpで文字列を配列に変換

マイ配列(これは変更できません):

$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]]"; 

私が必要とする結果:ここで

'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' 

は、私は現在、

$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); 

結果をやっているものです。

'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' 
配列には1つの値がこのように分類された文字列にこれを変換するとき

は、しかし:

$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'); 

は誰です:しかし

$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'"); 

を、私はそれがそれぞれの値は、次のように分離することにしたいですこの問題で私を助けることができる? (私はこれ以上、これはイム簡単な場合は、私の最初の投稿とても残念です、あなたが必要とするinformatedを提供することができます。)

答えて

2

これを試してみてください。

$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); 
+0

を使用して取得することができますキーと値、これはそれを修正ありがとう連想配列が含まれています。 –

1

は、単にカンマで爆発することは、インデックス付きの配列ではない連想配列になります。だから、キーでインデックス付き配列から値をフェッチするときには、さらにいくつかの操作を行う必要があります。例

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' 
) 

だから、これを試すことができます。

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

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

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

は今$requiredは、そのあなたがforeachループ

+0

ありがとう、私はあなたの方法を試してみます。 –

関連する問題