我有一个名为$ priority_array的数组。
一些示例输出是:
Array
(
[0] => Array
(
[ID] => 6
[ask_for_review] => 2
)
[1] => Array
(
[ID] => 5
[ask_for_review] => 1
)
[2] => Array
(
[ID] => 7
[ask_for_review] => 3
)
)
另一个......
Array
(
[0] => Array
(
[ID] => 7
[ask_for_review] => 3
)
[1] => Array
(
[ID] => 9
[ask_for_review] => 2
)
[2] => Array
(
[ID] => 11
[ask_for_review] => 2
)
)
我想更新一个基于数组中遇到的ask_for_review的第一个最低值的行。
在第一个示例中,将更新ID 5。其他ID将被忽略。 在第二个示例中,将更新ID 9。其他ID将被忽略。
更新类似于:
$query = "UPDATE tasks SET priority='1' WHERE ..."
我不知道该怎么做where子句。如何从PHP数组中选择最低值并将其放入mysql查询?
感谢@fedeisas的帮助。
在这样的查询中使用该函数的最佳方法是:
$ search_id = get_min_row($ priority_array); $ query =“UPDATE tasks SET priority ='1'WHERE ID = $ search_id;”;
或者有更好的方法吗?
答案 0 :(得分:2)
您可以直接使用SQL来执行此操作,但我不知道表的结构,因此我假设您希望使用PHP找到最小值。
这是一种可行的方法:
<?php
$list_1 = [
['ID' => 6, 'ask_for_review' => 2],
['ID' => 5, 'ask_for_review' => 1],
['ID' => 7, 'ask_for_review' => 3]
];
$list_2 = [
['ID' => 7, 'ask_for_review' => 3],
['ID' => 9, 'ask_for_review' => 2],
['ID' => 11, 'ask_for_review' => 2]
];
function get_min_row($list) {
$reviews = array_map(
function ($row) {
return $row['ask_for_review'];
},
$list
);
$row_key = array_search(min($reviews), $reviews);
return $list[$row_key]['ID'];
}
var_dump(get_min_row($list_1)); // int(5)
var_dump(get_min_row($list_2)); // int(9)