Получение данных подмассива из глубоко вложенного массива в PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Получение данных подмассива из глубоко вложенного массива в PHP

Сообщение Anonymous »

Я хотел бы извлечь данные из глубоко вложенных массивов. Мне нужна функция, которая вернет некоторую часть массива, соответствующую некоторым критериям. Мне нужны данные, которые находятся в подмассиве 'i' => 'p'
Учитывая вложенный массив ниже:
[
'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' => []
]
],
]
]

Я ищу что-то вроде:
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' => []
]

)
)


Я попробовал эту функцию:
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;
}

но он дает следующий массив:
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
(
)

)



Подробнее здесь: https://stackoverflow.com/questions/793 ... ray-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»