你在初始赋值的时候就用 array(b=>ssss,c=>ddddd)来配吧.

解决方案 »

  1.   

    我已经赋值了,就是说$a[b]已经存在了,我现在要把b这个键值换成d,怎么做?
      

  2.   

    $a[d]=$a[b];
    unset($a[b]);
    然后从新排序以下即可
      

  3.   

    可我不想破坏原来的顺序,$a[d]这个元素就让它在$a[b]原来的位置,是不是有点苛刻,但我的程序确实需要这样。
      

  4.   

    简单地说:是一个bbs中维护分类和论坛顺序的程序(分类中包括论坛)。
    用户调整分类和论坛的顺序后,用javascript生成名字为类似php数组的hidden字段:cat_arr[$cat_id][$forum_id]--$cat_id和$forum_id是可变的。
    这个数组生成的顺序就是用户排序之后的分类和论坛的顺序。
    在服务器端的php程序里,只要按数组的顺序设置分类和论坛的顺序就可以了。本来没有问题,可是我加上了用户创建新分类的功能,因为新的分类在数据库中没有cat_id,所以在客户端我使用(n+序号)来表示,这样,在服务器端处理$cat_arr[$cat_id][$forum_id]数组:
    while(cat循环){
      if(newcat){
        create new cat and get the new_cat_id.
      while(forum循环){
        at this place should use cat_id.
      }
    }在if(newcat)这一步$cat_id应该是'nxxx',我生成新的数据库中真实的new_cat_id之后,就想用这个new_cat_id代替$cat_arr[$cat_id][$forum_id]中'nxxx'这个键值,以便下面的(forum循环)不用写专门处理新分类的代码。我之所以想替换键值而不用什么把数组拆了再合并之类的方法就是不想破坏原有的顺序,顺序一乱我就不知道用户定义的顺序了。不知道大家是不是和我一样,总是想写出最简洁最漂亮的代码。还是那句话,我是不是太苛刻了,也许程序就象人生,理想和现实之间总是有差距的,自己的设想是很完美的,但是程序语言不一定提供足够的功能实现你的设想。
      

  5.   

    看你可怜,hehe
    <?
    $arr=array("a","b",3=>"dd","c",'name'=>"vivanboy","d");
    $changeIndex="name";
    $changeIndexTo="姓名";
    while(list($key,$val)=each($arr)){
    $temKey=(strval($key)==strval($changeIndex))?$changeIndexTo:$key;
    $result[$temKey]=$val;
    }
    echo "<pre>";
    print_r($result);
    echo "</pre>";
    ?>
      

  6.   

    改成函数:
    function changeIndex($arr,$changeIndex,$changeIndexTo){
    if(!array_key_exists($changeIndex,$arr)) return false;
    while(list($key,$val)=each($arr)){
    $temKey=(strval($key)==strval($changeIndex))?$changeIndexTo:$key;
    $result[$temKey]=$val;
    }
    return $result;
    }
      

  7.   

    =>
    $temKey=($key===$changeIndex)?$changeIndexTo:$key;
      

  8.   

    vivanboy(被迫早起的鸟儿):
      你这是又复制了一个数组,我说的是在原来的数组上改,不会就说不会,不能改就说不能改,知道你回答的问题多,也不用在这里硬充大头,还有对你的“看你可怜”这句表示及其地气不愤。演砸了,下去吧~~~~~
      但同时欢迎你对正确的方法再做探讨。
      

  9.   

    faint,真是一个......
    有没有听说过可怜的完美主义者!!!$arr=changeIndex($arr,$changeIndex,$changeIndexTo)
    这样就覆盖了原来的数组,内存中也清除了如果你只是想改变一个数组里面的末个索引,你仔细想一下数组的原理就知道不可能。你说你能该一个变量的本身名称吗???
      

  10.   

    什么什么,vivanboy(被迫早起的鸟儿) 兄,你的性欲值又低啦?