1

私はそのように構造化された文字列を持っています:

 "01;AA:02;AB:03;AC:"

$_POSTスタイルの形式にする方法はありますか。

 $MyVar['01'] = "AA"
 $MyVar['02'] = "AB"
 $MyVar['03'] = "AC"

また、変更が完了したら、どういうわけか元の文字列形式に戻したいと思います。(爆縮では先行ゼロは不要であり、爆発時には存在しない可能性があります)

編集:情報を追加する

 InevntorySKU;InventoryQTY:
     086;99:043;99:130;99:131;99:132;99:133;99:134;99:135;99:136;99:137;99:138;99:139;99:140;99:141;99:142;99:143;99:
4

2 に答える 2

8

これを行うための組み込み関数はありませんが、次のように行うことができます。

$MyVar = array();
foreach(array_filter(explode(":",$input)) as $i) {
    list($k,$v) = explode(";",$i,2);
    $MyVar[$k] = $v;
}

逆のプロセスにも同様の設定を使用します。

$output = "";
foreach($MyVar as $k=>$v) $output .= $k.";".$v.":";
于 2013-03-20T23:53:07.643 に答える
0

preg_match_allの使用:

preg_match_all('/\d{2}|[a-z]{2}/i', "01;AA:02;AB:03;AC:", $array);

for($i=0;$i<count($array[0]);$i+=2){
    $myvar[$array[0][$i]] = $array[0][$i+1];
}

print_r($myvar);

preg_splitの使用:

$str = '086;99:043;99:130;99:131;99:132;99:133;99:134;99:135;99:136;99:137;99:138;99:139;99:140;99:141;99:142;99:143;99:';
$array = preg_split('/;|:/', $str);

for($i=0;$i<count($array)-1;$i+=2){
    $myvar[$array[$i]] = $array[$i+1];
}

print_r($myvar);
于 2013-03-21T00:08:25.227 に答える