根据另一列的值查找记录集中的列值

时间:2012-04-12 11:30:11

标签: php mysql wordpress lookup recordset

我有一个MySQL SELECT查询(使用wpdb_custom->get_results()),可以为任意数字返回两个UNSIGNED TINYINTCol_1Col_2的行。在给定值为Col_2的情况下,PHP从记录集中查找Col_1的值的成本最低的方法是什么?

Emp_ID  Col_1    Col_2
120         3       11
120         5       17
120         6        8
120         8       13
120        11       10

例如,伪代码查找函数lookup(6, $recordset)将产生8

2 个答案:

答案 0 :(得分:0)

取决于你打算做什么,更重要的是经常。

你可以在同一张桌子上使用MySQL-JOIN。或者您创建一个哈希并比较数据集。或者你使用array_search()。

答案 1 :(得分:0)

让我们假设你的记录集对数组看起来像这样:

Array
(
    [0] => Array
        (
            [Emp_ID] => 120
            [Col_1] => 3
            [Col_2] => 11
        )

    [1] => Array
        (
            [Emp_ID] => 120
            [Col_1] => 5
            [Col_2] => 17
        )

    [2] => Array
        (
            [Emp_ID] => 120
            [Col_1] => 6
            [Col_2] => 8
        )
    ....
)

现在每页创建一个ONCE搜索数组。

$search_array =array();
foreach( $recordSet as $key=>$data ){

        $search_array[$data['Col_1']]=$data['Col_2'];   
}

然后,每当您需要从Col_1中找到Col_2的值时,只需使用:

echo $search_array[6]; // will return 8

对于相同的搜索数组,使用array_search()

echo  array_search("8",$search_array); // will return 6