2017-05-07 56 views
0

我在从数据库中获取数组时遇到了一些问题。
原始数组转换一次看起来像这样:PHP阵列分离

Array 
(
    [0] => {"lastTimeSave":"1494000000" 
    [1] => "rankexpire":"0" 
    [2] => "evocity_rank":"g-vip" 
    [3] => "evocity_rankexpire":"0"} 
) 

我成功删除一些无用的角色,所以我最终阵列看起来像这样:

Array 
(
    [0] => lastTimeSave:1494000000 
    [1] => rankexpire:0 
    [2] => evocity_rank:g-vip 
    [3] => evocity_rankexpire:0 
) 

我所想要做的是前搞定一切''并将其放入阵列的密钥中,然后删除':',使其看起来像这样:

Array 
(
    ['lastTimeSave'] => 1494000000 
    ['rankexpire'] => 0 
    ['evocity_rank'] => g-vip 
    ['evocity_rankexpire'] => 0 
) 

我使用分离:

$staffarray = str_replace('"', "", $staffarray); 
$staffarray = str_replace('{', "", $staffarray); 
$staffarray = str_replace('}', "", $staffarray); 

我已经尝试过许多东西,包括:

foreach ($stafftestarray as $key => $value) { 
    $substring = substr($value, 0, strpos($value, ';')); 
    $subsubstring = str_replace($substring, "", $value); 
    $value = $subsubstring; 
} 

但似乎没有任何改变,输出不被改变,我会很感激的任何帮助我解决这个问题,因为我搜索了无数个小时如何解决它无济于事。

+0

使用爆炸在PHP – bigbounty

+4

功能它看起来像你想手动解析JSON字符串。为什么不使用'json_decode()'? –

+0

@AlexHowansky我完全忘了JSON,多谢了! –

回答

1

看起来像存储在数组中的分解json对象。 (?你通过,爆炸字符串)

虽然我不知道为什么你的数据看起来像

这会做你想要什么:

$data = json_decode(implode(',', $yourArray), true); 
0

不要取下"并使用爆炸来创建一个基于旧数组的新数组。

$array = array 
     (
      0 => "lastTimeSave:1494000000", 
      1 => "rankexpire:0", 
      2 => "evocity_rank:g-vip", 
      3 => "evocity_rankexpire:0" 
     ); 

$new_array = array(); 

foreach($array as $value) 
{ 
    $item = explode(":", $value); 
    $new_array[$item[0]] = $item[1]; 
} 

print_r($new_array); 

print_r($new_array)会给:

Array 
(
    [lastTimeSave] => 1494000000 
    [rankexpire] => 0 
    [evocity_rank] => g-vip 
    [evocity_rankexpire] => 0 
)