0
私はオブジェクトに作成したい多次元配列を持っているので、xmlとjsonの両方として出力することができます。オブジェクトに再帰的にPHP多次元配列
私はこのことを再帰的に行う方法について頭を悩ませています。私はここで見つけることができますが、まだ固執している多くの多次元の投稿を見てきました。
私は間違っていますか?私はこの出力を作成するために探しています
class Dataset
{
public $name;
public $attr = array();
public $children = array();
function __construct($name){
$this->name = $name;
}
function addAttr($attr){
$this->attr[] = $attr;
}
function addChildren($children){
$this->children[] = $children;
}
}
$jazzy = Array(
name => 'aaa',
attr => Array(
id => 123
),
children => Array(
Array(
name => 'name',
attr => Array(),
children => Array(
'www'
),
),
Array(
name => 'websites',
attr => Array(),
children => Array(
Array(
name => 'website',
attr => Array(
id => 456,
class => 'boom'
),
children => Array(
Array(
name => 'url',
attr => Array(),
children => Array(
'www.test.com'
)
)
)
),
Array(
name => 'website',
attr => Array(
id => 123,
class => "boom"
),
children => Array(
Array(
name => 'url',
attr => Array(),
children => Array(
'www.example.com'
)
)
)
)
)
)
)
);
<aaa id="123">
<name>www</name>
<websites>
<website id='456' class="boom">
<url>www.test.com</url>
</website>
<website id='123 class="boom">
<url>www.example.com</url>
</website>
</websites>
</aaa>
これは、あなたが、その後に使用することができ、あなたのDataSetオブジェクトへデータを解析する方法であるかもしれ
function arrayToDataset($array, $node){
foreach ($array as $key => $value) {
$name = $array['name'];
$attr = $array['attr'];
$children = $array['children'];
if($key == "name"){
$name = $value;
$node->addName($name);
}
elseif($key == "attr"){
$attr = $value;
$node->addAttr($attr);
}
elseif($key == "children")
{
$children = $value;
$newNode = new Dataset();
foreach($children as $k => $v)
{
$newNode = $node->addChildren($v);
}
return arrayToDataset($children, $newNode);
}
}
}
$node = new Dataset();
$thing = arrayToDataset($jazzy, $node);
print_r($thing);
は[array_walk_recursive()](http://php.net/manual/en/function.array-walk-recursive.phpを見てみることを行うための簡単な方法があるかもしれません) 関数。 – coderodour
*この関数はリーフノードにのみアクセスします* – Tristanisginger
$ jazzy配列の形式が正しくない - これはコードのコピーですが、キーは引用符で囲む必要があります。コードをコピー/ペーストすることができれば助けが簡単です... – RichGoldMD