Есть ли способ получить именованный ключ / значение из SUBARRAY, не зная основного ключа?

Короткий: Есть ли способ получить именованный ключ / значение из SUBARRAY, не зная основного ключа?

Долго:

У меня есть цикл foreach, который извлекает текстовые файлы & превращает их в отдельные / единичные массивы (сбрасывая массив между каждым файлом) …

пример:

Array
(
[Blah Blah] => Array
(
[number] => 10
[name] => nameBlah
[image] =>
)
)Array
(
[pinkblue597] => Array
(
[number] => 18
[name] => nameBlah68
[image] =>
)
)

(1-я часть для преобразования в массив используется несколькими частями процесса, поэтому я не хочу добавлять ненужный код)

Я хочу извлечь значения «name» и «number», однако заранее не знаю значения / формата ключа .. — Пример: pinkblue597

Если я сделаю print_rЯ вижу массив, как я хочу …

print_r($found,true)."\n";

но если я сделаю это, $name=$found[0]; Я не получил результатов для «$ name» …

или же

если я сделаю это, $name=$found[0]["name"]; Я не получил результатов для «$ name» …

Я мог бы сделать это через цикл foreach, но это кажется неэффективным …

PS в этом массиве будет только ОДИН (неизвестный) ключ, & подмассив. Подмассив всегда один и тот же.

Отредактировано: облегчает просмотр кода (забыл это сделать)

-2

Решение

Если формирование массива будет одинаковым все время …

затем (вложенный) foreach петля будут достаточно, возьмите пример ниже,

<?php

$a = [
'somethingUnknown13582563' => [
'name' => 'name',
'number' => 15
],

'somethingUnknown2' => [
'name' => 'another name',
'number' => 24
]
];

foreach ($a as $key => $subArray) {
foreach ($subArray as $subKey => $value) {
echo $subArray[$subKey] . '<br>';
}
}

?>

Выход

name
15
another name
24

Или же…

Вы могли бы использовать array_values,

<?php

$a = [
'somethingUnknown13582563' => [
'name' => 'first name',
'number' => 15
],

'somethingUnknown2' => [
'name' => 'name',
'number' => 24
]
];

$a = array_values($a);

echo $a[0]['name'];

?>

Который превратил бы первый ассоциативный массив в числовые индексы и хотел бы,

array(
0 => array(
'name' => 'first name',
'number' => 15,
),
1 => array(
'name' => 'name',
'number' => 24,
)
)
1

Другие решения

Я не уверен, почему вы создаете вложенный массив в первую очередь, если вы намереваетесь только немедленно удалить его, но так как массив, кажется, имеет только один элемент, и вы заботитесь только об этом элементе, вы можете просто использовать array_pop

$a = [
'somethingUnknown13582563' => [
'name' => 'first name',
'number' => 15
],
];

$data = array_pop($a);
echo $data['name']; // gives you 'first name'

Обратите внимание, что array_pop разрушительно Так что, если вы не хотите такого поведения, вы можете использовать что-то вроде end вместо.

$data = end($a); // same effect as array_pop but non-destructive
echo $data['name']; // also gives you 'first name'

С учетом сказанного foreach построить не обязательно неэффективный. Я верю, что ваша настоящая забота — найти более простой способ разыменовать вложенный массив. Самый простой способ сделать это в вашем случае будет использовать что-то вроде end($a)['name'] что дает вам прямую разыменование, которое вы ищете.

0

Ты можешь использовать array_map () для достижения этой цели…

array_map — Применяет обратный вызов к элементам данных массивов. Это зациклит все элементы массива через функцию обратного вызова, и вы сможете распечатать каждый элемент, присутствующий в подмассиве.

<?php
$myArry = array(
'Blah Blah' => array(
'number' => 10,
'name' => 'Blah Blah 1',
),
'pinkblue597' => array(
'number' => 15,
'name' => 'Blah Blah 2',
)
);

array_map(function($arr){
echo 'Name : '.$arr['name'].'<br>';
echo 'Number : '.$arr['number'].'<br>';
},$myArry);

?>

Это даст вам:

Name : Blah Blah 1
Number : 10
Name : Blah Blah 2
Number : 15
0
По вопросам рекламы [email protected]