PHP Array获取第一项

时间:2017-08-25 14:16:47

标签: php

这可能是一种非常简单的方法,但我无法解决这个问题。

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][];

既不返回值。我做错了什么?

3 个答案:

答案 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);

无论密钥是什么,这都应该有效。