ホームページ >バックエンド開発 >PHPチュートリアル >print_r($arr,true) で生成された文字列を配列に復元する方法
print_r($arr,true) によって生成された文字列を配列に復元する方法
たとえば、次のようになります。
$arr=array('abcd'=>'sdfasdf','bbb'=>) ;' lxg','ccc'=>'bbbbbbbbb');
$str=print_r($rr,true);
$str を配列変数である $arr に変更したいのですが、誰でもできます。
-----解決策-------------------------- ------
それだけです 目的は何ですか? $arr から直接コピーするだけです。
------解決策---------
json_encode、json_decode を使用します。 。
------解決策---------
1次元配列でも処理可能多次元配列は扱うのが非常に困難です。 。 。
------解決策---------
クラストライ{ $dict = array(); 保護された $buf = ''; function set($word, $value='') { if(is_array($word)) foreach($word as $k=>$v) $this->set($k, $v); $p =& $this->dict; foreach(str_split($word) as $ch) { if(! isset($p[$ch])) $p[$ch] = array(); $p =& $p[$ch]; } $p['val'] = $value; $this を返します。 } 関数解析($str) { $this->doc = $str; $this->len = strlen($str); $i = 0; while($i len) { $t = $this->find($this->dict, $i); if($t) { $i = $t; $this->buf = ''; }else $this->buf .= $this->doc{$i++}; } } 保護された関数 find(&$p, $i) { if($i >= $this->len) $i を返します。 $t = 0; $n = $this->doc{$i}; if( isset($p[$n]) ) $t = $this->find($p[$n], $i+1); if($t) $t を返します。 if( isset($p['val']) ) { $ar =explode(',', $p['val']); call_user_func_array( array($this, array_shift($ar)), $ar ); $i を返します。 } $t を返します。 } 関数 __call($method, $param) { echo "****n$this->未定義メソッド:$メソッドパラメータ:" . join(',', $param) "<br />n"; } } <br><font color="#e78608">------解決策---------</font><br>