这可能是一种非常简单的方法,但我无法解决这个问题。
Array ( [0] => Array ( [] => US [1] => U.S. [2] => 21 [3] => 34 [4] => 33 [5] => 35 [6] => 39 [7] => 50 [8] => 61 ) [1] => Array ( [] => 79 [1] => 45 [2] => 84 [3] => 89 [4] => 59 [5] => 64 [6] => 34 [7] => 58 [8] => 55 ) [2] => Array ( [] => 63 [1] => 105 [2] => 68 [3] => 62 [4] => 64 [5] => 67 [6] => CL [7] => Chile [8] => 56 ) [3] => Array ( [] => 40 [1] => 40 [2] => 63 [3] => 37 [4] => 57 [5] => 64 [6] => 59 [7] => 53 [8] => 68 ) [4] => Array ( [] => 70 [1] => 66 [2] => 88 [3] => 48 [4] => 76 [5] => 83 [6] => 80 [7] => 53 [8] => 45 ) [5] => Array ( [] => 44 [1] => 51 [2] => 52 [3] => [4] => [5] => [6] => [7] => [8] => ) )
这是我的阵列。每种方式都会有相同数量的对象(9),但目前6处的数字可能会增加。
我需要在每个中获得第一项,所以我需要的第一项(美国)我被卡住,好像我放了
echo $array[0][1];
然后我得到了美国但是我需要第一个项目(美国),所以我尝试了两个
echo $array[0][0];
echo $array[0][];
既不返回值。我做错了什么?
答案 0 :(得分:2)
在PHP中可以使用“空”字符串作为关联数组中的键。
它与任何其他非空字符串键值明显不同 - 因此它满足了对此键的最基本要求(并且PHP人员似乎没有看到任何需要明确地阻止它。)
$arr = [
'foo' => 'bar',
'' => 'baz',
];
print_r会将其显示为
Array
(
[foo] => bar
[] => baz
)
和var_dump'ed它看起来像这样,
array(2) {
["foo"]=>
string(3) "bar"
[""]=>
string(3) "baz"
}
后者更明显的是,密钥实际上是一个空字符串,因此$arr[""]
分别为。 $arr['']
可用于访问此元素。
有人可能会认为这是PHP的一个特点 - 它确实工作,但它在实践中几乎没有用过,因为它对大多数用例来说并不是最有意义的。
答案 1 :(得分:0)
如果我是你,我会首先问自己为什么我的数组有一个空键,我最好的猜测是你用键设置你的子数组,而不是让它通过写这样的东西逐步编入索引:
array(
'' => 'US', // Maybe a '0' was intended to be there, and it's a type.
'1' => 'U.S.',
'2' => '21',
'3' => '34',
'4' => '33',
// etc...
);
在这种情况下,您可能会受益于修复代码,或者至少更新代码,以便您的数组可以使用,例如删除密钥以便用连续的索引替换它们。
无论如何,如果你想使用那个当前数组,请执行以下操作:
echo $array[0][''];
或者遍历它:
foreach ($array as $sub) {
echo $sub[''],'<br>';
}
如果您无法控制阵列的设置方式,也可以使用array_values()
重新编制索引。该函数将数组作为参数,并使用连续索引而不是原始键返回其值:
foreach ($array as $key => $sub) {
$array[$key] = array_values($sub);
}
该代码应该为您提供与以前相同的数组,但空键被替换为0
。
答案 2 :(得分:0)
其他答案对我不会重复的空键提供了很好的解释,但是获取每个子数组中第一项的简单方法是映射我们提到的reset
函数。对主阵列的评论。
$firsts = array_map('reset', $your_array);
无论密钥是什么,这都应该有效。