【问题标题】:PHP: How can I get the value from a key in a multiple arrayPHP:如何从多个数组中的键中获取值
【发布时间】:2014-08-18 13:48:10
【问题描述】:

多重数组的样子

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

如何在不知道 id 数值的情况下从 id 为“数量”的 dbfield 获取值?

实际代码是这样的

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

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

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

【问题讨论】:

  • 你能显示任何代码尝试吗?我的第一个建议是考虑如何派生一个数据结构,您可以根据该数据结构执行您想要的查找。除此之外,您至少应该能够拼凑出一种蛮力方法并在这里展示您的努力。

标签: php arrays


【解决方案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】:

    这样回显数组..

    $array = array();
    
    $array['qty'] = 'qtty';
    $array['dbfield'] = 'QUANTITY_NEW';
    
    if($array['qty'] = 'qtty'){
    
    echo $array['dbfield'];
    
    } 
    
    returns - QUANTITY_NEW
    

    【讨论】:

      【解决方案3】:

      您可以通过多种方法做到这一点,其中一种是使用array_map 来获取这些值:

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

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

      在线尝试复现你的代码可以找到here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-09
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多