2017-04-11 61 views
0

我有一個名爲$ priority_array的數組。基於PHP數組的最小值的MySQL更新

一些樣本輸出:

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;」;

或者還有更好的方法嗎?

回答

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)