2017-11-30 7 views
0
Array 
(
    [0] => Array 
     (
      [20] => stdClass Object 
       (
        [qopid] => 20 

        [data] => {"room":0,"category":0} 

       ) 

      [21] => stdClass Object 
       (
        [qopid] => 21 

        [data] => {"room":0,"category":0} 

       ) 

      [22] => stdClass Object 
       (
        [qopid] => 22 

        [data] => {"room":0,"category":0} 

       ) 

     ) 

    [1] => Array 
     (
      [23] => stdClass Object 
       (
        [qopid] => 23 

        [data] => {"room":"3","category":0} 

       ) 

      [24] => stdClass Object 
       (

        [data] => {"room":"3","category":0} 

       ) 

      [25] => stdClass Object 
       (

        [data] => {"room":"3","category":0} 

       ) 

     ) 

    [2] => Array 
     (
      [26] => stdClass Object 
       (
        [qopid] => 26 

        [data] => {"room":"4","category":0} 

       ) 

      [27] => stdClass Object 
       (
        [qopid] => 27 

        [data] => {"room":"4","category":0} 

       ) 

      [28] => stdClass Object 
       (
        [qopid] => 28 

        [data] => {"room":"4","category":0} 

       ) 

     ) 

) 

は、私は、データがビューに来ることにしたい(データベースフィールドのJSON形式で現在価値に応じて)その部屋0であるとして、常に最後に来るべきでSQLクエリ内のデータをソートします[データ] => {「部屋」:0、「カテゴリ」:0})は、どのように(ここで

私は部屋ゼロのデータが常に最後に来るようにしてください。以下

は私のSQLクエリの上

$sql = 'SELECT q.* FROM ' . \SystemTables::DB_TBL_QUOTATION_PRODUCT . ' q LEFT JOIN ' . \SystemTables::DB_TBL_ITEM . ' ii ON q.iid = ii.iid WHERE q.qoid = "' . $qoid . '" '; 

       if ($rooms == 0) 
       { 
        $like = "'" . '%{"room":' . $rooms . ',%' . "'"; 
       } 
       else 
       { 
        $like = "'" . '%{"room":"' . $rooms . '",%' . "'"; 
       } 
       if ($cat_id != null && $cat_id > 0) 
       { 
        $like1 = "'" . '%[{"id":"' . $cat_id . '"}]%' . "'"; 
        $sql .= ' AND c_catid LIKE ' . $like1 . ''; 
       } 


       $sql .= ' AND q.data LIKE ' . $like . ''; 

私のSQLクエリは、どのようにそれを行うにはされているのですか?ソートbyは正確な列ではありません。 データの中にある部屋で並べ替えが必要です。文の最後も0 ':これを行うの

+1

あなただけの配列をソートしたいか、あなたが '部屋を持っていたものとSQLクエリを作成したいのですか? – Erwin

+0

配列をソートしたいが、部屋0は常に配列リストの最後に来るはずです。 – sradha

答えて

0

一つの方法は、ネストされたforeachループ

foreach ($array as $key => $value) { // Loop thru each array 
    foreach ($value as $object) {  // Loop thru each object 
     $data = $object->data;   // Set data value to $data 
     $decode = json_decode($data); // Decode $data string 
     if ($decode->room == 0) {  // Check if room is 0 
      $move = $array[$key];  // Set array value to $move 
      unset($array[$key]);  // Unset array first 
      $array[$key] = $move;  // Then add array to last 
     } 
    } 
} 

print_r($array); // print array