简短:有没有办法在不知道主键的情况下从SUBARRAY获取命名键/值?
长:
我有一个foreach循环,提取文本文件&将它们变成单个/单个数组(在每个文件之间重置数组)......
示例:
Array
(
[Blah Blah] => Array
(
[number] => 10
[name] => nameBlah
[image] =>
)
)
Array
(
[pinkblue597] => Array
(
[number] => 18
[name] => nameBlah68
[image] =>
)
)
(变成数组的第一部分被进程的多个部分使用,所以我不想添加不必要的代码)
我想提取“name”和“number”的值,但是我不知道该键的值/格式... - 示例:pinkblue597
如果我print_r
,我确实看到了我想要的数组......
print_r($found,true)."\n";
但如果我这样做,$name=$found[0];
我的“$ name”没有结果......
或
如果我这样做,$name=$found[0]["name"];
我的“$ name”没有结果......
我可以通过foreach循环来做到这一点,但它似乎效率低下......
PS此阵列中只有一个(未知)键,&一个子阵列。子数组总是一样的。
编辑:让代码更容易看到(忘记这样做)
答案 0 :(得分:1)
然后(嵌套的)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 :(得分:0)
我不知道你为什么要首先创建一个嵌套数组,如果你只打算立即丢弃它,但由于数组似乎只有一个元素,你只关心那个元素,你可以简单地使用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']
的东西,它可以为您提供您正在寻找的那种直接解除引用。
答案 2 :(得分: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