2017-04-11 13 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は無視されます。 2番目の例では、ID 9が更新されます。他のIDは無視されます。私は、where句のために何をすべきか分からない

$query = "UPDATE tasks SET priority='1' WHERE ..." 

更新は次のように何かをすることでしょう。 PHPの配列から最低の値を選択し、それをmysqlクエリに入れるにはどうすればよいですか?

追加

ありがとうございました。

は、このようなクエリで機能を使用するための最良の方法です:

$ search_id = get_min_row($のpriority_array)。 $ query = "UPDATEタスクSET優先度= '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) 

これは、1つの可能なアプローチであります

関連する問題