简单地说:是一个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循环)不用写专门处理新分类的代码。我之所以想替换键值而不用什么把数组拆了再合并之类的方法就是不想破坏原有的顺序,顺序一乱我就不知道用户定义的顺序了。不知道大家是不是和我一样,总是想写出最简洁最漂亮的代码。还是那句话,我是不是太苛刻了,也许程序就象人生,理想和现实之间总是有差距的,自己的设想是很完美的,但是程序语言不一定提供足够的功能实现你的设想。
unset($a[b]);
然后从新排序以下即可
用户调整分类和论坛的顺序后,用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循环)不用写专门处理新分类的代码。我之所以想替换键值而不用什么把数组拆了再合并之类的方法就是不想破坏原有的顺序,顺序一乱我就不知道用户定义的顺序了。不知道大家是不是和我一样,总是想写出最简洁最漂亮的代码。还是那句话,我是不是太苛刻了,也许程序就象人生,理想和现实之间总是有差距的,自己的设想是很完美的,但是程序语言不一定提供足够的功能实现你的设想。
<?
$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>";
?>
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;
}
$temKey=($key===$changeIndex)?$changeIndexTo:$key;
你这是又复制了一个数组,我说的是在原来的数组上改,不会就说不会,不能改就说不能改,知道你回答的问题多,也不用在这里硬充大头,还有对你的“看你可怜”这句表示及其地气不愤。演砸了,下去吧~~~~~
但同时欢迎你对正确的方法再做探讨。
有没有听说过可怜的完美主义者!!!$arr=changeIndex($arr,$changeIndex,$changeIndexTo)
这样就覆盖了原来的数组,内存中也清除了如果你只是想改变一个数组里面的末个索引,你仔细想一下数组的原理就知道不可能。你说你能该一个变量的本身名称吗???