【问题标题】:Query array similarly to SQL query - PHP查询数组类似于 SQL 查询 - PHP
【发布时间】:2015-09-14 14:15:58
【问题描述】:

我正在尝试编写一个快速脚本,它只查询一次 MSSQL 表,然后在我端组织响应,这样我就不必一直查询 mysql 来获取数据。

很难解释,但我想出的是在一个查询中获取我需要的所有内容,然后将每一行组织成一个数组,然后将该数组放入另一个全包数组中,然后我可以从中提取数据.

到目前为止我得到了什么:

$allInclusiveArray = [];
$sumRecords = mssql_num_rows($result);
for ($i = 0; $i < $sumRecords; ++$i) {
    //get key values for array
    echo $value1= mssql_result($result, $i, 'key1');
    echo $value2= mssql_result($result, $i, 'key2');
    echo $value3= mssql_result($result, $i, 'key3');
    echo $value4= mssql_result($result, $i, 'key4');

    $tempArray = [
        "key1" => $value1,
        "key2" => $value2,
        "key3" => $value3,
        "key4" => $value4
    ];

    array_push($allInclusiveArray, $tempArray);
}

最终结果将是一个看起来像这样的数组:

$allInclusiveArray = [
     [array with keys and values],
     [array with keys and values],
     [array with keys and values]
];

我想知道是否有一种方法可以查询此数组以获取与一个键相关的所有值,而另一个键具有固定值。在 mssql 中,它看起来像 SELECT key1 FROM table WHERE key2 = value2

一种可能是执行一个 for 循环,然后运行 ​​if 语句检查键和值是否匹配,例如:

for (i in length of array) {
    if (the array located at i has key2 equaling value2) {
        select the value of key1 from the array at this index
    }
}

编辑:我最终在 MSSQL 方面进行了大部分排序。我有一个有效的 PHP 脚本可以对大量数据进行排序,但即使处理 20,000 条记录也需要很长时间。

【问题讨论】:

标签: php arrays sql-server


【解决方案1】:

像这样?

这是一个例子:https://3v4l.org/MrqvI

function arrayQuery($array, $key, $match){
    foreach($array as $row){
        if(array_key_exists($key, $row) && $row[$key] == $match) return $row;
    }
    return $false;
}

如果您需要更多功能,这可以很容易地扩展到一个完整的类

【讨论】:

    【解决方案2】:

    Here 是我昨天写的一篇关于这个主题的博文(/咆哮)。

    底线是 Doctrine 具有可查询的 ArrayCollectionsSQL 类似语义(Criteria 类似于 ORM 查询构建器)。

    为此的资源是here。如果您使用 composer,您可以要求项目中的库直接使用它。

    它通常与 ORM 或 ODM 结合使用,以过滤(部分加载)大型关系(这是this article 所呈现的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2023-04-03
      • 2011-01-15
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多