2017-07-11 8 views
0

私の質問PHPでのvar_dump/Var_exportedデータを交換

それはstr_replaceまたはPHPの他の特別なメソッドを使用してのvar_dump /でvar_exportデータを交換することは可能ですか?例えば

この変更:str_replace('array (', '[', var_export($obj));

またはそれらの線に沿って何かのようなステートメントを使用して、この

[ 
    0 => 
    [ 
    'age' => '21', 
    'number' => '45243', 
    'anotherNumber' => '32463', 
    'AnotherAge' => '33', 
    ], 
] 

中に、

array (
    0 => 
    array (
    'age' => '21', 
    'number' => '45243', 
    'anotherNumber' => '32463', 
    'anotherAge' => '33', 
), 
) 

、私は上記のステートメントを試してみたが、それはdoesntの仕事

+0

この質問(またはそれに類するもの)は前に尋ねられていますが、 'array('と ')'を '['と ']'に置き換えるのは簡単ではありません。これらの文字を保持する可能性のある値を考慮する。これが間違っていると、データのマングリングが発生します。 – mickmackusa

答えて

0

はい、しかし、あなたは "返す"パラを与える必要がありますメートルからvar_export。 echo str_replace('array (', '[', var_export($obj, true));

さらにリーディング:そう同様

http://php.net/manual/de/function.var-export.php

str_replaceはまた、最初の2つのパラメータとして配列を取ることができます。したがって、1回の呼び出しで複数の置換操作を処理できます。そのよう

echo str_replace(['array (', ')'], ['[', ']'], var_export($obj, true));

これが出現するすべての置換することを記載すべきしかし「)」「]」と。したがって、配列の一部の文字列で中カッコを使用すると、データが操作されます。

+0

お返事いただきありがとうございます。返信パラメータをtrueに設定しているので、読んでから変更を加えました。返信パラメータをtrueに設定するので、値を返す代わりに値が返されるので、コード行をエコーし​​なければなりません。これですべての作品がうまくいきました! –

+0

問題はありません。編集提案のおかげで –

+0

Downvoted、これは信頼できる方法ではないためです。 – mickmackusa

1

いいえ、不可能です。配列キーまたは値に '('または ')がある可能性があり、置き換えられるためです。より良い適切な形式

で再帰を使用して独自の機能を構築するために例えば:

function myDump($arr) { 

    if (is_scalar($arr)) { 
     echo var_export($arr); 
     return; 
    } 
    if (is_array($arr)) { 
     echo '[' . PHP_EOL; 
     $cc = ''; 
     foreach ($arr as $k => $val) { 
      echo $cc, var_export($k), ' => '; 
      myDump($val, $level + 1); 
      $cc = ',' . PHP_EOL; 
     } 
     echo '],', PHP_EOL; 
    } 
} 

$arr = array (
    array (
    'age' => '21', 
    'number' => '45243', 
    'anotherNumber' => '32463', 
    'anotherAge' => '33', 
), 
); 

echo '<pre>'; 
myDump($arr); 
echo '</pre>'; 

出力は次のようになります。

[ 
0 => [ 
'age' => '21', 
'number' => '45243', 
'anotherNumber' => '32463', 
'anotherAge' => '33'], 
], 

これは一例であり、あなたの必要のためにそれを修正します。