Guest
Abrufen von Subarray-Daten aus einem tief verschachtelten Array in PHP
Post
by Guest » 28 Dec 2024, 15:40
Ich möchte die Daten aus tief verschachtelten Arrays extrahieren. Ich bin auf der Suche nach einer Funktion, die einen Teil des Arrays liefert, der bestimmten Kriterien entspricht. Ich bin auf der Suche nach den Daten, die unter dem Subarray „i“ => „p“ zu finden sind.
Gegeben sei das folgende verschachtelte Array:
Code: Select all
[
'a' => [
'i' => [
'p' => [
'v' => [
'age' => 10,
'name' => 'John',
'city' => 'Seattle'
],
'l' => [
'referee' => 'Jane Smith'
],
'm' => [
'referee' => 'Jane Smith'
],
]
]
],
'b' => [
'i' => [
'p' => [
'sibling' => 'Peter'
]
],
],
'c' => [
'i' => [
'p' => [
'material' => [
'i' => [
'p' => [
'marketId' => [
'title' => 'marketplaceId'
],
'color' => [
'i' => [
'p' => [
'value' => [
'title' => 'Mr',
"type" => "string"
],
'language' => 'C++'
]
]
],
],
]
]
]
],
],
'd' => [
'i' => [
'p' => [
'schedule' => [
'i' => [
'p' => [
'value' => [
'title' => 'your value',
'description' => 'your description'
]
]
]
]
]
]
],
'e' => [
'i' => [
'p' => [
'value' => [
'title' => 'your value',
'description' => 'your description'
],
'language' => [],
'marketplace' => []
]
],
]
]
Ich suche etwas wie:
Code: Select all
Array(
a => Array(
'v' => [
'age' => 10,
'name' => 'John',
'city' => 'Seattle'
],
'l' => [
'referee' => 'Jane Smith'
],
'm' => [
'referee' => 'Jane Smith'
],
b =>
[
'sibling' => 'Peter'
]
c =>
material => [
'marketId' => [
'title' => 'marketplaceId'
],
'color' => [
'i' => [
'p' => [
'value' => [
'title' => 'Mr',
"type" => "string"
],
'language' => 'C++'
]
]
],
],
d => schedule
=> [
'value' => [
'title' => 'your value',
'description' => 'your description'
]
]
e => [
'value' => [
'title' => 'your value',
'description' => 'your description'
],
'language' => [],
'marketplace' => []
]
)
)
Ich habe diese Funktion ausprobiert:
Code: Select all
function getIPData($array, $prefix = '') {
$return = [];
foreach ($array as $key => $value) {
if (!empty($value['i']['p'])) {
$return = array_merge($return, getIPData($value['i']['p'], $prefix . $key . '_'));
} else {
echo "Prefix: $prefix Key: $key \n";
$return[$prefix . $key] = $value;
}
}
return $return;
}
aber es ergibt das folgende Array:
Code: Select all
Array
(
[a_v] => Array
(
[age] => 10
[name] => John
[city] => Seattle
)
[a_l] => Array
(
[referee] => Jane Smith
)
[a_m] => Array
(
[referee] => Jane Smith
)
[b_sibling] => Peter
[c_material_marketId] => Array
(
[title] => marketplaceId
)
[c_material_color_value] => Array
(
[title] => Mr
[type] => string
)
[c_material_color_language] => C++
[d_schedule_value] => Array
(
[title] => your value
[description] => your description
)
[e_value] => Array
(
[title] => your value
[description] => your description
)
[e_language] => Array
(
)
[e_marketplace] => Array
(
)
)
1735396843
Guest
Ich möchte die Daten aus tief verschachtelten Arrays extrahieren. Ich bin auf der Suche nach einer Funktion, die einen Teil des Arrays liefert, der bestimmten Kriterien entspricht. Ich bin auf der Suche nach den Daten, die unter dem Subarray „i“ => „p“ zu finden sind. Gegeben sei das folgende verschachtelte Array: [code] [ 'a' => [ 'i' => [ 'p' => [ 'v' => [ 'age' => 10, 'name' => 'John', 'city' => 'Seattle' ], 'l' => [ 'referee' => 'Jane Smith' ], 'm' => [ 'referee' => 'Jane Smith' ], ] ] ], 'b' => [ 'i' => [ 'p' => [ 'sibling' => 'Peter' ] ], ], 'c' => [ 'i' => [ 'p' => [ 'material' => [ 'i' => [ 'p' => [ 'marketId' => [ 'title' => 'marketplaceId' ], 'color' => [ 'i' => [ 'p' => [ 'value' => [ 'title' => 'Mr', "type" => "string" ], 'language' => 'C++' ] ] ], ], ] ] ] ], ], 'd' => [ 'i' => [ 'p' => [ 'schedule' => [ 'i' => [ 'p' => [ 'value' => [ 'title' => 'your value', 'description' => 'your description' ] ] ] ] ] ] ], 'e' => [ 'i' => [ 'p' => [ 'value' => [ 'title' => 'your value', 'description' => 'your description' ], 'language' => [], 'marketplace' => [] ] ], ] ] [/code] Ich suche etwas wie: [code]Array( a => Array( 'v' => [ 'age' => 10, 'name' => 'John', 'city' => 'Seattle' ], 'l' => [ 'referee' => 'Jane Smith' ], 'm' => [ 'referee' => 'Jane Smith' ], b => [ 'sibling' => 'Peter' ] c => material => [ 'marketId' => [ 'title' => 'marketplaceId' ], 'color' => [ 'i' => [ 'p' => [ 'value' => [ 'title' => 'Mr', "type" => "string" ], 'language' => 'C++' ] ] ], ], d => schedule => [ 'value' => [ 'title' => 'your value', 'description' => 'your description' ] ] e => [ 'value' => [ 'title' => 'your value', 'description' => 'your description' ], 'language' => [], 'marketplace' => [] ] ) ) [/code] Ich habe diese Funktion ausprobiert: [code]function getIPData($array, $prefix = '') { $return = []; foreach ($array as $key => $value) { if (!empty($value['i']['p'])) { $return = array_merge($return, getIPData($value['i']['p'], $prefix . $key . '_')); } else { echo "Prefix: $prefix Key: $key \n"; $return[$prefix . $key] = $value; } } return $return; } [/code] aber es ergibt das folgende Array: [code]Array ( [a_v] => Array ( [age] => 10 [name] => John [city] => Seattle ) [a_l] => Array ( [referee] => Jane Smith ) [a_m] => Array ( [referee] => Jane Smith ) [b_sibling] => Peter [c_material_marketId] => Array ( [title] => marketplaceId ) [c_material_color_value] => Array ( [title] => Mr [type] => string ) [c_material_color_language] => C++ [d_schedule_value] => Array ( [title] => your value [description] => your description ) [e_value] => Array ( [title] => your value [description] => your description ) [e_language] => Array ( ) [e_marketplace] => Array ( ) ) [/code]