【问题标题】:PHP Array Search to get the second resultPHP Array Search 得到第二个结果
【发布时间】:2014-06-05 13:14:12
【问题描述】:

我得到了一个类似的数组:

array(127) {
  [0]=>
  array(2) {
    [0]=>
    string(14) "Info"
    [1]=>
    int(9) "28491231"
  }
  [1]=>
  array(2) {
    [0]=>
    string(16) "description"
    [1]=>
    string(9) "Webserver"
  }
  [2]=>
  array(2) {
    [0]=>
    string(11) "server_type"
    [1]=>
    string(9) "HOST"
  }
  [3]=>
  array(2) {
    [0]=>
    string(2) "os"
    [1]=>
    string(7) "Windows"
  }

....

在这个数组中搜索“Info”并获得值“28491231”的最快方法是什么?

谢谢

【问题讨论】:

  • 您的标题与实际问题无关。此外,您需要的是一个非常简单的循环和一个带有breakif 条件。
  • 该数组本身只会提供线性搜索(Sergiu 所说的)。如果你想有更快的搜索,你将不得不实现一个额外的数据结构作为索引。因此,请提供有关您的搜索要求的更多信息。 (只有索引字段?有几百万个条目?你有超过 1 TB 的 RAM 吗?..)

标签: php arrays performance


【解决方案1】:

我假设你有一个这样的数组:

$sourceArray = array(
    array('Info', '28491231'),
    array('description', 'webserver'),
    array('server_type', 'HOST'),
    array('os', 'Windows'),
);

如果你想从中获得特定的东西,你可以像这样创建一个辅助函数:

// Helper Function
function getData($targetKey, $sourceArray) {
    foreach ($sourceArray as $arrayItem) {
        list ($key, $val) = $arrayItem;
        if ($key == $targetKey)
            return $val;
    }
    return false;
}

// Usage
var_dump(getData('Info', $sourceArray));

输出:

【讨论】:

    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多