Abrufen von Subarray-Daten aus einem tief verschachtelten Array in PHPPhp

PHP-Programmierer chatten hier
Guest
 Abrufen von Subarray-Daten aus einem tief verschachtelten Array in PHP

Post by 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: 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
(
)

)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post