【问题标题】:PHP search multidimensional array with two keys for value of 3rd key?PHP搜索带有两个键的多维数组以获取第三个键的值?
【发布时间】:2017-02-03 00:22:17
【问题描述】:

我认为这很简单,用两个键搜索多维数组以返回第三个键的值。当我开始并且无法让它工作时,我更加困惑。

Array ( 
[0] => Array ( [data] => Array ( [name] => Definite Position [Company_ID] => 4 [code] => DEF ) ) 
[1] => Array ( [data] => Array ( [name] => First Option [Company_ID] => 7 [code] => TNT ) ) 
[2] => Array ( [data] => Array ( [name] => Second Option [Company_ID] => 4 [code] => SEC ) ) 
[3] => Array ( [data] => Array ( [name] => Definite Out [Company_ID] => 6 [code] => DBO ) ) 

当我的 [Company_ID] 为 4 且 [code] 为 'SEC' 时,我想恢复 [name] 的值

任何帮助将不胜感激。谢谢

【问题讨论】:

标签: php search multidimensional-array


【解决方案1】:

这只是一个简单的循环访问data 索引,然后是下面的索引:

$id = 4;
$code = 'SEC';

foreach($array as $values) {
    if($values['data']['Company_ID'] == $id && $values['data']['code'] == $code) {
        $result = $values['data']['name'];
        break; // we found it no need to loop more
    }
}

【讨论】:

  • 谢谢,我让它变得比需要的困难得多。效果很好!
【解决方案2】:

这可能会有所帮助:

<?php
$array = array(
    array(
        "data" => array(
            "name" => "Definite Position",
            "Company_ID" => 4,
            "code" => "DEF"
        )
    ),
    array(
        "data" => array(
            "name" => "First Option",
            "Company_ID" => 7,
            "code" => "TNT"
        )
    ),
    array(
        "data" => array(
            "name" => "Second Option",
            "Company_ID" => 4,
            "code" => "SEC"
        )
    ),
    array(
        "data" => array(
            "name" => "Definite Out",
            "Company_ID" => 6,
            "code" => "DBO"
        )
    )
);

/**
 * Searches the array for matching criteria
 *
 * @param array $search Array of criteria to search for (eg. array("Company_ID" => 4, "code" => "SEC"))
 * @param array $array The array to search
 *
 * @return array The elements of the array that matched the criteria
 */

function search($search, $array)
{
    $retVal = array();
    foreach($array as $k => $v)
    {
        $found = true;
        foreach($search as $sKey => $sVal)
        {
            if ($v["data"][$sKey] != $sVal)
            {
                $found = false;
                break;
            }
        }
        if ($found)
            $retVal[]= $v;
    }

    return $retVal;
}

$results = search(
    array(
        "Company_ID" => 4,
        "code" => "SEC"
    ),
    $array
);

var_dump($results);

结果:

array(1) {
  [0]=>
  array(1) {
    ["data"]=>
    array(3) {
      ["name"]=>
      string(13) "Second Option"
      ["Company_ID"]=>
      int(4)
      ["code"]=>
      string(3) "SEC"
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2014-03-23
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多