dongxingguo1978 2016-10-22 09:44
浏览 88
已采纳

使用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.)

  • 写回答

2条回答 默认 最新

  • dta38159 2016-10-22 09:52
    关注

    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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起