2016-04-01 10 views
0

配列を文字列にフォーマットしたいので、配列をログファイルに書きたいからです。書式は次のとおりです。配列(キー付き)またはJSONからPHPへの文字列?

key=value; key1=value1; ... 

また、キーまたはJSONオブジェクトを持つ配列でも機能するはずです。そこ

+0

私は ')(シリアライズ'いずれか検討するかは 'json'両方はかなり防弾ですが、あなたが必要と言う形式を生成しません。その正確なフォーマットがどれほど重要であるか。 serializeまたはjsonを使用すると、サブ配列とサブ配列、そしておそらくオブジェクトまたは2でスローされた複雑な配列を最初に遭遇する心配はありません。単純な関数呼び出しですべてが完了します。 JSON文字列は、出力をシリアライズするよりはるかに人間的に読みやすいです。 – RiggsFolly

+0

ありがとう! @RiggsFolly –

答えて

0
function arrayToString($array){ 
    $result=""; 
    while($object = current($array)){ 
     $result .= key($array) . "="; 
     if(is_array($object)) { 
      $result .= arrayToString($object); 
     } else { 
      $result .= $object; 
     } 
     $result .= "; "; 
     next($array); 
    } 
    return $result; 
} 

あなたはそのために)(http_build_queryを使用することができます

0

を行く:

$data = array("k1" => "v1","k2" => "v2","k3" => "v4"); 
$string = http_build_query($data,"", "; ", PHP_QUERY_RFC1738); 

あなたが別の区切り文字が必要な場合は"; "を変更します。 PHP_QUERY_RFC1738は、+をスペースとして使用します。これはデフォルトにする必要がありますが、PHP_QUERY_RFC3986のように聞こえます。

あなたはそれはそれを置き換えたくない場合は、次の

$string = str_replace("+"," ", $string); 
+0

ありがとう!私はこれを試しましたが、URL形式に@ - >%40またはこれに似たものをエンコードしました –

関連する問題