有个问题想请教一下以name的第一个字母顺序给company排序:<? foreach($event['Company'] as $company) {
     e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
                } //alt=".$company['name']." ?> 

解决方案 »

  1.   

    用ASCII码比对大小执行排序
    备注
    ord()函数可以获取ASCII值
    int ord(string str);
      

  2.   


    能不能说的详细一点,谢谢另外能否用asort()函数排序呢
      

  3.   

    你说给$company[name]值排序还是
    $company数组的值排序呢?
    如果你说给$company数组值排序的话 可以用asort()排序~
      

  4.   

    刚才没理解好你问题下面贴代码$com=array($company=array("name"=>"c","url"=>"dd"),$company=array("name"=>"z","url"=>"dd"),$company=array("name"=>"d","url"=>"dd"),$company=array("name"=>"b","url"=>"dd"),$company=array("name"=>"f","url"=>"dd"));
    $newcompany=$com;
    $names;
    $urls;
     foreach($com as $key=>$val) {
    $names[$key] = $val['name'];
    $urls[$key] = $val['url'];
     }
     array_multisort($names,SORT_STRING,SORT_ASC,$urls,SORT_STRING,SORT_ASC,$com);//使用name字符串值来排序如果相同则用url字符串值二次排序
    print_r($com);
      

  5.   


    可以使用asortasort
    (PHP 4, PHP 5)asort — 对数组进行排序并保持索引关系说明
    bool asort ( array &$array [, int $sort_flags ] )
    本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。 成功时返回 TRUE, 或者在失败时返回 FALSE. Example #1 asort() 例子<?php
    $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
    asort($fruits);
    foreach ($fruits as $key => $val) {
        echo "$key = $val\n";
    }
    ?> 
    以上例程会输出:c = apple
    b = banana
    d = lemon
    a = orange
    fruits 被按照字母顺序排序,并且单元的索引关系不变。 可以用可选的参数 sort_flags 改变排序的行为,详情见 sort()。 但是要注意asort默认是A-Z a-z从大写字母到小写字母这样的一个顺序(根据ASCII码来排序的),看是否能满足你的要求
      

  6.   


    我尝试过用asort(),但是没有变化。这个网站是用的cakephp框架,是不是只能用框架自带的排序函数呢
      

  7.   

    朋友,谢谢你的回复。我尝试着用了你的代码,可是好像输出还是和原来一样。我刚开始学PHP,照我的理解,$event['Company'] 和 $company 是2个不同的数组,所以sort($event['Company'])并不会对$company有影响,不知道这样理解对不对
      

  8.   

    asort是对一维数组进行排序,而楼主的数组是类似于array(   array("name"=>"sss", "homepage_url"=>".fdsa......." .....),   
       array("name"=>"ddss", "homepage_url"=>"ad........" .....),....
    )这样的结构是不能用sort来直接排序的,需要使用自定义排序,我写了段测试代码,应该可以解决你的问题了,代码如下:<?php
    $fruits = array(
        array("name" => "qqqsafdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
        array("name" => "hresafdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
        array("name" => "safdabb", "a" => "orange", "b" => "banana", "c" => "apple"),
        array("name" => "cccg", "a" => "orange", "b" => "banana", "c" => "apple")
        );//排序函数
    function cmp($a,$b)
    {
        return strcmp($a['name'], $b['name']);
    }
    //自定义排序
    usort($fruits, 'cmp');foreach ($fruits as $key => $val) {
        echo "$key = {$val['name']}\n";
    }
    ?>
      

  9.   

    PS:程序排序结果如下0 = cccg 1 = hresafdabb 2 = qqqsafdabb 3 = safdabb 是按字母默认排序的
      

  10.   


    非常谢谢你的回复,我是PHP入门者,所以很多地方都不太理解刚弄了一下,还是不太成功,我的代码是这样写的:
                    <? 
    foreach($event['Company'] as $value) {  //生成$company数组
    $company = $value;
    }
    function cmp($a,$b)
    {
         return strcmp($a['name'], $b['name']);
    }
    //自定义排序
    usort($company, 'cmp');

    foreach ($company as $key => $val) {
         echo "$key = {$val['name']}\n";
    } foreach($event['Company'] as $company) {
                        e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
                    } //alt=".$company['name']." ?>实在不好意思,麻烦朋友了
      

  11.   

    我对数组的操作还是有迷惑,比如我要操作$company,要先遍历$event给$company赋值,排序操作完$company, 应该如何输出这一段呢:  e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
    需要再把$company赋回给$event['Company']吗?
      

  12.   


    感觉有点糊涂了,foreach($event['Company'] as $value) { //生成$company数组
    $company = $value;
    }这段代码完全不明白意思,赋值的语法也是错的,如果$event['Company']是要排序的数组话,直接传入即可
      

  13.   

    建议还是要多看看基础,代码修改如下:  <?  
    foreach($event['Company'] as $value) { //生成$company数组
    $company[] = $value;
    }
    function cmp($a,$b)
    {
      return strcmp($a['name'], $b['name']);
    }
    //自定义排序
    usort($company, 'cmp');foreach ($company as $key => $val) {
      echo "$key = {$val['name']}\n";
    }foreach($event['Company'] as $company) {
      e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
      } //alt=".$company['name']."  ?>foreach($event['Company'] as $company) {
      e("<a href=".$company['homepage_url']."><img src='".$company['logo100_url']."' width='100' border='0' /></a>");
      } //alt=".$company['name']."  这段代码还是不太明白意思,你是要验证呢还是其他的目的?
      

  14.   


    我就是没搞清楚$event['Comapany']和$company的关系,不过貌似好像他们只是有关联,但不一样,因为我用$event['Comapany']['name']输出不了
      

  15.   


    不是验证,就是想依次输出各个赞助商的LOGO和URL链接,而且是以名字字母的先后顺序输出