0

我有这个数组 -它是一个多维数组,我不知道 0 索引

Array
(
    [0] => Array
        (
            [foo] => 1111
            [bar] => example
        )

)

而且我需要在一行中使用原生 php 函数从 key 获取值bar。我尝试了很多与current, key,array_keys等的组合。current($array)我得到了:

Array
(
    [foo] => 1111
    [bar] => example
)

我发现array_keys,它允许我使用第二个参数指定要查找的值。但是我不知道值,只知道键,并且array_values没有提出第二个参数来查找(:o)。

我现在在这里:current(array_keys(array_flip(current($b))), 'bar')没用。但

$c = array_flip(current($b));
print_r(current(array_keys($c, 'bar')));

作品 - 我得到“例子”。(顺便说一句,为什么这两条线有效,而不是前一条?)。

而且我知道,这样array_flip做很难看,但我不知道该怎么做。任何想法 ?谢谢。

4

7 回答 7

5

是什么阻止你使用

$value=$myArray[0]["bar"];
echo $value;
于 2013-04-26T14:57:19.857 回答
2

在 PHP 5.4+ 中试试这个:

<?php
$a = array(array('foo' => 1111, 'bar' => 'example'));
print_r(current($a)['bar']);
?>
于 2013-04-26T15:22:34.223 回答
1

不要问我怎么大声笑:

$a = array(array('foo' => 1111, 'bar' => 'example'));
echo array_map(function($v){if(isset($v['bar'])){return $v['bar'];}}, $a)[0];

笔记:

  • 这仅适用于最新版本的 PHP 5.4+

  • 如果没有“bar”键,这将引发错误

在线演示


更好的解决方案:

$a = array(
    array('aaa' => 2222, 'bbb' => '333'),
    array('foo' => 1111, 'bar' => 'example'),
    array('wut' => 'lol', 'zzz' => 'ggg')
);

echo array_values(array_filter(array_map(function($v){if(isset($v['bar'])){return $v['bar'];}}, $a)))[0];

在线演示

于 2013-04-26T15:11:24.617 回答
0

你需要这样的东西吗?

$c = $b[0]['bar'];
于 2013-04-26T14:58:12.050 回答
0
$a = array(array('foo' => 1111, 'bar' => 'example'));
echo $a[0]['bar'];

例子

于 2013-04-26T14:59:20.400 回答
0

使用此代码:

echo $array[0]['bar'];

或者,使用 PHP 函数:

echo array_pop(array_shift($array));

它将提取 的第一个元素$array

Array
(
    [foo] => 1111
    [bar] => example
)

然后提取并显示此数组的最后一个元素:

example
于 2013-04-26T15:01:43.810 回答
0

如果你不想使用 [0],你可以使用这个来代替:

$value = null;
foreach($array as $each)
{
   if(isset($each['bar']))
      $value = $each['bar'];
}
于 2013-04-26T15:07:35.243 回答