我有一个MySQL SELECT
查询(使用wpdb_custom->get_results()
),可以为任意数字返回两个UNSIGNED
TINYINT
列Col_1
和Col_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
。
答案 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