助けが必要です。この問題の解決策を探しています!次のパターンを含むファイルがあります。
ブラジル|サンパウロ|ディアデマ|ルアダフェ ブラジル|サンパウロ|ディアデマ|ルアドリモエイロ ブラジル|サンパウロ|サンカエターノ|ルアダスラランジェイラス ブラジル|パラナ|クリチバ|コメンダドールアラウーホ 米国|ニュージャージー|ジャージーシティ|ワシントンブルバード 米国|ニュージャージー|ジャージーシティ|リバーコート
これは、配列キーの実装の後に、次のようなものをもたらすはずです(phpでjson_encode呼び出しを適用した後):
{
"name": "Brazil",
"children": [
{
"name": "SaoPaulo",
"children": [
{
"name": "Diadema",
"children": [
{"name": "RuadaFe"},
{"name": "RuadoLimoeiro"}
]
},
{
"name": "SaoCaetano",
"children": [
{"name": "RuadasLaranjeiras"}
]
},
]
"name": "Parana",
"children": [
{
"name": "Curitiba",
"children": [
{"name": "ComendadorAraujo"}
]
}
]
},
"name":"USA",
"children":[
{
"name": "NewJersey",
"children": [
{
"name": "JerseyCity",
"children": [
{"name": "WhashingonBoulevard"},
{"name": "RiverCourt"}
]
}
]
}
]
}
]
そして、どんどん進んでください(そしてさらに深く)。チームを助けてください...よろしくお願いします。
ここで私が今まで得たもの:
Array ( [Brazil] => Array ( [SaoPaulo] => Array ( [Diadema] => Array ( [RuadoLimoeiro] => )
[SaoCaetano] => Array
(
[RuadasLaranjeiras] =>
)
)
[Parana] => Array
(
[Curitiba] => Array
(
[ComendadorAraujo] =>
)
)
)
[USA] => Array
(
[NewJersey] => Array
(
[JerseyCity] => Array
(
[WhashingtonBoulervard] =>
[RiverCourt] =>
)
)
)
)
そして、エンコードされたjsonは次のとおりです。
{
"Brazil":{
"SaoPaulo":
{"Diadema":
{"RuadoLimoeiro":null},
"SaoCaetano":{"RuadasLaranjeiras":null}
},
"Parana":
{"Curitiba":
{"ComendadorAraujo":null}
}
},
"USA":{
"NewJersey":{
"JerseyCity":{
"WhashingtonBoulervard":null,
"RiverCourt":null}
}
}
}
ご覧のとおり、「names」と「child」は配列キー構造ではないため欠落しています。また、SaoPaulo でいくつかの値が欠落しているため、何かが間違っています。
関数は次のとおりです。
foreach($strings as $string) {
$parts = array_filter(explode('|', $string));
$ref = &$result;
foreach($parts as $p) {
// echo $p;
if(!isset($ref[$p])) {
$ref[$p] = array();
// $ref[$p] = array("name"=>$p);
}
$ref = &$ref[$p];
}
$ref = null;
}
-------------------------------- いくつかの回答の後 --------------- -----------
{
"name": "Brazil(country)",
"children": [
{
"name": "SaoPaulo(state)", // only one state
"children": [
{
"name": "Diadema(city)", // only one city
"children": [
{"name": "RuadaFe(street)"}, // two streets under the same city...
{"name": "RuadoLimoeiro(street)"}
]
},
{
"name": "SaoCaetano(city)",
"children": [
{"name": "RuadasLaranjeiras(street)"}
]
},
]
"name": "Parana(state)",
"children": [
{
"name": "Curitiba(city)",
"children": [
{"name": "ComendadorAraujo(street)"}
]
}
]
},...
私が欲しいものを明確にするために、構造(国、州、都市、通り)を括弧で囲みます。とった?