繁体   English   中英

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

[英]PHP: How can I get the value from a key in a multiple array

多重数组看起来像

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']等尝试了,但是显然失败了。

这样回显数组。

$array = array();

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

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

echo $array['dbfield'];

} 

returns - QUANTITY_NEW

使用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);

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

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

print_r($dbfield);

您遍历数组,并返回id为'quantity'的键dbfield 数组过滤器只是为了不返回没有“数量” ID的空值。

可在此处找到在线重现代码的尝试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM