Php 如何按键值对数组的输出进行排序

Php 如何按键值对数组的输出进行排序,php,sorting,Php,Sorting,我有一个函数,输出属性的详细信息,并需要按价格/平方英尺对结果进行排序 <?php //get search results! if ($dbh) { $sql = sql_spShowMemberSearch($_SESSION['r_search']); //create query from search vals $tout .= "<p><b>sql_spShowMemberSearch<

我有一个函数,输出属性的详细信息,并需要按价格/平方英尺对结果进行排序

<?php
    //get search results!

    if ($dbh)
    { 

        $sql = sql_spShowMemberSearch($_SESSION['r_search']); //create query from search vals
        $tout .= "<p><b>sql_spShowMemberSearch</b>: " . $sql . "</p>";


        $result=odbc_exec($dbh, $sql); //create db recordset

        if (isset($r_results)) { unset($r_results); }
        if (isset($_SESSION['r_results'])) { unset($_SESSION['r_results']); }
        //store recordset in array for use after closing db connection

        while(odbc_fetch_row($result)) // getting data
        {
            $rowcount++;
            //store values needed       
            //$r_results[$rowcount]['IsUs']             = odbc_result($result, 1); // IsUs
            $r_results[$rowcount]['intID']          = odbc_result($result, 2); // intID
            $r_results[$rowcount]['currentprice']   = odbc_result($result, 3); // CurrentPrice
            $r_results[$rowcount]['beds']           = odbc_result($result, 4); // Beds
            $r_results[$rowcount]['bath']           = odbc_result($result, 5); // Bath
            $r_results[$rowcount]['year']           = odbc_result($result, 6); // Year
            $r_results[$rowcount]['sf']             = odbc_result($result, 7); // SF
            $r_results[$rowcount]['address']        = odbc_result($result, 8); // Address
            $r_results[$rowcount]['community']      = odbc_result($result, 9); // Community
            $r_results[$rowcount]['office']         = odbc_result($result, 10); // Office
            $r_results[$rowcount]['agent']          = odbc_result($result, 11); // Agent
            //$r_results[$rowcount]['Type']             = odbc_result($result, 12); // Type
            $r_results[$rowcount]['photopath']      = odbc_result($result, 13); // PhotoPath
            $r_results[$rowcount]['pics']           = odbc_result($result, 14); // Pics
            $r_results[$rowcount]['mlsid']          = odbc_result($result, 15); // MLSID
            $r_results[$rowcount]['city']           = odbc_result($result, 16); // City
            $r_results[$rowcount]['long']           = odbc_result($result, 17); // Long
            $r_results[$rowcount]['lat']            = odbc_result($result, 18); // Lat
            $r_results[$rowcount]['source']         = odbc_result($result, 19); // Source
            //$r_results[$rowcount]['Tracked']      = odbc_result($result, 20); // Tracked
            $r_results[$rowcount]['status']         = odbc_result($result, 21); // Status
            //$r_results[$rowcount]['PageRow']      = odbc_result($result, 22); // PageRow

            $r_results[$rowcount]['ppsq']       = number_format(odbc_result($result, 3)/odbc_result($result, 7)); // Status


            $plcity = strtoupper(trim(preg_replace("/[^A-Za-z0-9[:space:]]/","",$r_results[$rowcount]['city'])));
            $plcity = str_replace(" ","-",$plcity);
            $pladdr = strtoupper(trim(preg_replace("/[^A-Za-z0-9[:space:]]/","",$r_results[$rowcount]['address'])));
            $pladdr = str_replace(" ","-",$pladdr);
            $plmls = trim($r_results[$rowcount]['mlsid']);
            $r_results[$rowcount]['permalink'] = "http://www.fairplay.com/realty/details/".$plcity."/".$pladdr."/".$plmls;

        }


        if ($rowcount==0) {
            if ($page_current == 1 ) {
                $e_msg[] = 'No results found! Please modify your search parameters (above).';
            } else {
                $e_msg[] = 'We ran out of search results, please go back or modify your search criteria to find additional matches.';
            }

        } 

        if ( $rowcount < $page_size ) {
            //since we can't rely on DB result for total count try not to let users page to non existant pages
            $_SESSION['r_search']['total_results'] = ($_SESSION['r_search']['page_start'] + ($rowcount-1)); 

         }

        //close connection
        odbc_close ($dbh);
    } //if $dbh
    else echo "odbc not connected <br>";
    //end get search results

function display_results($r_results) {
    $rowcount = 0;


    foreach ($r_results as $key=>$value) {

        $rowcount ++;       
        if ( $rowcount == 1 ) {
            echo "\n<h3>Results for Real Estate in <span class='location'>".strtoupper($_SESSION['r_search']['searchtext'])."</span></h3>";
            echo "\n<h4><strong>".number_format($_SESSION['r_search']['total_results'])."</strong> properties match your search</h4>\n";
            echo "\n<table id=\"realty\">\n";
            echo "<thead>\n";                                          
            echo "<th class=\"photos\">Photos</th> \n";                                        
            echo "<th class=\"address\">Address</th> \n"; 
            echo "<th class=\"community\">Community</th> \n";                                                  
            echo "<th class=\"numeric\">Price</th> \n";                                                            
            echo "<th class=\"beds\">Beds</th> \n";                                    
            echo "<th class=\"bath\">Bath</th> \n";                                    
            echo "<th class=\"year\">Year</th> \n";
            echo "<th class=\"numeric sf\">SQFT</th> \n";                                                                                  
            echo "<th class=\"mls\">MLS #</th> \n";
            echo "<th class=\"status\">Status</th> \n";
            echo "<th>&nbsp;</th> \n";                 
            echo "</thead> \n";
        }

        //  echo "Row: $key<br/>";
        //  make row
        echo "<tr> \n";
        echo "<td class=\"photos\"><a style=\"cursor:pointer;\" target=\"_blank\" href=\"/realty/detail/".$r_results[$rowcount]['intID']."\"><img src=\"";

        if ( isset($r_results[$key]['photopath']) ) {
            echo "http://www.foreclosuredatasystems.com/images/FullMLS/" . str_replace("\\","/",$r_results[$key]['photopath'])."/".$r_results[$key]['mlsid'] . "-01.jpg";
        } else {
            echo "http://fairplay.com/img/fr_home_thumb.jpg";
        }

        //echo str_replace("\\","/",$r_results[$key]['photopath'])."/".$r_results[$key]['mlsid'] ;
        echo "\" alt=\"photographs provided by MLS listing service providers\" width=\"100\" /></a></td> \n";    
        echo "<td class=\"address\"> \n";
        echo "<p>".$r_results[$key]['address']."<br /> \n";
        echo " ".$r_results[$key]['city']."</p> \n";
        echo "<!--<a href=\"#?lat=".$r_results[$key]['lat']."&long=".$r_results[$key]['long']."\" class=\"map\">Map this</a>--> \n";
        echo "</td> \n";
        echo "<td class=\"community\">".$r_results[$key]['community']."</td>                             \n";
        echo "<td class=\"price\">\$".number_format($r_results[$key]['currentprice'])."</td>                         \n";
        echo "<td class=\"beds\">".$r_results[$key]['beds']."</td> \n";
        echo "<td class=\"bath\">".$r_results[$key]['bath']."</td> \n";
        echo "<td class=\"year\">".$r_results[$key]['year']."</td> \n";
        echo "<td class=\"sf\">".number_format($r_results[$key]['sf'])."</td> \n";
        echo "<td class=\"mls\">".$r_results[$key]['mlsid']."</td> \n";
        echo "<td class=\"status\">".$r_results[$key]['status']."</td> \n";
        echo "<td class=\"action\"><a href=\"/realty/detail/".$r_results[$rowcount]['intID']."\">View Details</a><!--".$key."--></td> \n";       
        echo "</tr> \n";
        echo "<tr class=\"extra\"> \n";
        echo "<td class=\"photos\"><!--<a href=\"#\">".$r_results[$key]['pics']." photos</a>--></td> \n";
        echo "<td colspan=\"10\" class=\"source\">Listing courtesy of: ".$r_results[$key]['source']." / ".$r_results[$key]['office']."</td> \n";
        echo "</tr> \n";    

    } // END FOREACH LOOP

    echo "</table >\n";
} //function display_results()

?>

您很幸运,这是一个php内置函数:

例如:

<?php

$r_results = array();
$r_results[0] = array('photopath' => '/photo/1', 'ppsq' => 12);
$r_results[1] = array('photopath' => '/photo/7', 'ppsq' => 456);
$r_results[2] = array('photopath' => '/photo/2', 'ppsq' => 789);
$r_results[3] = array('photopath' => '/photo/9', 'ppsq' => 123);
$r_results[4] = array('photopath' => '/photo/3', 'ppsq' => 23);
$r_results[5] = array('photopath' => '/photo/5', 'ppsq' => 1);

$ppsqs = array();

foreach ($r_results as $key => $arr) {
  $ppsqs[$key] = $arr['ppsq'];
}

array_multisort($ppsqs, SORT_DESC, $r_results);

echo $r_results[0]['photopath'];
echo "\n";
echo $r_results[1]['photopath'];

?>

您很幸运,这是一个php内置函数:

例如:

<?php

$r_results = array();
$r_results[0] = array('photopath' => '/photo/1', 'ppsq' => 12);
$r_results[1] = array('photopath' => '/photo/7', 'ppsq' => 456);
$r_results[2] = array('photopath' => '/photo/2', 'ppsq' => 789);
$r_results[3] = array('photopath' => '/photo/9', 'ppsq' => 123);
$r_results[4] = array('photopath' => '/photo/3', 'ppsq' => 23);
$r_results[5] = array('photopath' => '/photo/5', 'ppsq' => 1);

$ppsqs = array();

foreach ($r_results as $key => $arr) {
  $ppsqs[$key] = $arr['ppsq'];
}

array_multisort($ppsqs, SORT_DESC, $r_results);

echo $r_results[0]['photopath'];
echo "\n";
echo $r_results[1]['photopath'];

?>


通过查看一些相关问题。您应该使用sql进行订购。为了让我们帮助您,您必须在运行查询时给出答案。通过查看一些相关问题。您应该使用sql进行排序。为了让我们帮助您,您必须在运行查询时给出。我如何仅在lets say…10结果的前两行上输出图像?根据您的请求编辑问题。我如何仅在lets say…10结果的前两行上输出图像?根据您的请求编辑问题。