php数组:在一行中,如何从已知密钥中获取未知值?

时间:2013-04-26 14:55:26

标签: php optimization

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

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

)

我需要在一行中使用本机php函数来获取密钥bar的值。我尝试了很多currentkeyarray_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这个很难看,但我不知道怎么办。任何的想法 ?感谢。

7 个答案:

答案 0 :(得分:5)

什么阻止你使用

$value=$myArray[0]["bar"];
echo $value;

答案 1 :(得分:2)

在PHP 5.4+中尝试:

<?php
$a = array(array('foo' => 1111, 'bar' => 'example'));
print_r(current($a)['bar']);
?>

答案 2 :(得分:1)

不要问我LOL:

$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”键,则会抛出错误

Online demo


更好的解决方案:

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

Online demo

答案 3 :(得分:0)

你需要这样的东西吗?

$c = $b[0]['bar'];

答案 4 :(得分:0)

$a = array(array('foo' => 1111, 'bar' => 'example'));
echo $a[0]['bar'];

例如

答案 5 :(得分:0)

使用此代码:

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

或者,使用PHP函数:

echo array_pop(array_shift($array));

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

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

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

example

答案 6 :(得分:0)

如果您不想使用[0],可以改用:

$value = null;
foreach($array as $each)
{
   if(isset($each['bar']))
      $value = $each['bar'];
}