基于具有最低值

时间:2017-04-11 22:53:47

标签: php mysql arrays

我有一个名为$ 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查询?

ADDED

感谢@fedeisas的帮助。

在这样的查询中使用该函数的最佳方法是:

$ search_id = get_min_row($ priority_array); $ query =“UPDATE tasks SET priority ='1'WHERE ID = $ search_id;”;

或者有更好的方法吗?

1 个答案:

答案 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)