第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按可選列對加密數(shù)據(jù)進(jìn)行排序(表格排序)

按可選列對加密數(shù)據(jù)進(jìn)行排序(表格排序)

PHP
繁華開滿天機(jī) 2022-07-22 16:06:25
有點掙扎以處理按列名對表進(jìn)行排序。問題是數(shù)據(jù)已加密,因此不能僅按所需方向(升序降序)按列進(jìn)行排序。所以我想我可以使用 usort 但是雖然我可以用它調(diào)用一個函數(shù),即usort( $data, "sortMyData" );我不能傳遞字段來排序或者它的方向。所以要做到這一點,我需要編寫一個函數(shù)來對每個可能的列進(jìn)行排序,這根本不理想,有沒有人知道一種方法,例如我可以向 usort 添加另一個參數(shù),該參數(shù)將包含它的排序?qū)傩院头较?。也許另一種方法是將整個數(shù)據(jù)集解密到某個內(nèi)存表中,但是由于數(shù)據(jù)是加密且安全的,我想知道這是否會為漏洞打開道路!我的最后一個選擇是將其構(gòu)建到一個 foreach 循環(huán)中,我認(rèn)為這是有道理的,但這是唯一的方法嗎?
查看完整描述

2 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊

我無法通過該字段進(jìn)行排序或它的方向。


事實上,你可以。有一個例子:


<?php

  // Example data

  $data = array(

    array('name' => 'Gamma',  'val' => 25),

    array('name' => 'Beta',  'val' => 5),

    array('name' => 'Alpha', 'val' => 10)

  );



  function sortme(&$array, $onfield, $isdesc) {

     usort($array, 

           function($a, $b) use ($onfield, $isdesc) { // 'use' keyword allows to reference external variables from the inside

              // custom method to obtain and comapre data;

              $v1 = isset($a[$onfield]) ? $a[$onfield] : NULL; 

              $v2 = isset($b[$onfield]) ? $b[$onfield] : NULL;


              if ($v1 < $v2) return ($isdesc ? 1 : -1);

              elseif ($v1 > $v2) return ($isdesc ? -1 : 1);

              else return 0; 

              // Note: the conditions above can be replaced by spaceship operator in PHP 7+:

              // return $isdesc ? ($v2 <=> $v1) : ($v1 <=> $v2) ;

           }

          );

  }



  sortme($data, 'name', false); // sort by `name` ascending

  print_r($data); // Alpha -> Beta -> Gamma


  sortme($data, 'val', true); // sort by `val` descending

  print_r($data); // 25 -> 10 -> 5


查看完整回答
反對 回復(fù) 2022-07-22
?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊

它提供了一個將額外參數(shù)傳遞給 usrot 函數(shù)的示例。


function sort_by_term_meta( $terms, $meta ) 

{

    usort($terms, array(new TermMetaCmpClosure($meta), "call"));

}


function term_meta_cmp( $a, $b, $meta )

{

    $name_a = get_term_meta($a->term_id, $meta, true);

    $name_b = get_term_meta($b->term_id, $meta, true);

    return strcmp($name_a, $name_b); 


class TermMetaCmpClosure

{

    private $meta;


    function __construct( $meta ) {

        $this->meta = $meta;

    }


    function call( $a, $b ) {

        return term_meta_cmp($a, $b, $this->meta);

    }

}

基本上您需要創(chuàng)建一個類函數(shù)來進(jìn)行排序,并且您可以在構(gòu)造類時傳遞其他參數(shù)(列,方向)。


查看完整回答
反對 回復(fù) 2022-07-22
  • 2 回答
  • 0 關(guān)注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號