PHP:如何从多个数组中的键获取值

时间:2014-08-18 13:48:11

标签: php arrays

多个数组看起来像

Array
(
    [id] => description
    [header] => 
    [width] => 20
    [dbfield] => description
    [type] => text
)
Array
(
    [id] => quantity
    [header] => Menge
    [dbfield] => QUANTITY_NEW
    [width] => 60
    [type] => decimal
)

如何在不知道id的数值的情况下从dbfield获取id为'quantity'的值?

实际代码如

foreach($array as $id => $fieldData) {

   if($fieldData['type'] == 'decimal') 
   {
     doSomething...();
   }
}

在带有doSomething的部分中,我需要访问数组中的其他字段,但我只知道id。我已经尝试过使用dbfield ['quantity'] ['dbfield']等明显失败了。

3 个答案:

答案 0 :(得分:1)

这样回显数组..

$array = array();

$array['qty'] = 'qtty';
$array['dbfield'] = 'QUANTITY_NEW';

if($array['qty'] = 'qtty'){

echo $array['dbfield'];

} 

returns - QUANTITY_NEW

答案 1 :(得分:1)

使用array_keys的简单替代方法:

function getValues($data, $lookForValue, $column)
{
    $res = array();

    foreach ($data as $key => $data) 
    {
        if($idx = array_keys($data, $lookForValue))
        {
            $res[$idx[0]] = $data[$column];
        }
    } 

    return $res;
}

$values = getValues($myData, "quantity", "dbfield");

var_dump($values);

答案 2 :(得分:0)

您可以使用多种方法执行此操作,其中一种方法是使用array_map来获取这些值:

$dbfield = array_filter(array_map(function($a){
    if($a["id"] === "quantity"){
        return $a["dbfield"];
    }
}, $array));

print_r($dbfield);

您遍历数组,然后返回dbfield id所在的数字{#1}}。数组过滤器只是为了不返回空值,它没有数量'标识。

可以在here

找到重现代码的在线尝试