$a = array(
'0'=>array(
'id'=>'0',
'title'=>'no1',
'editor'=>'zhangsan',
),
'1'=>array(
'id'=>'1',
'title'=>'no2',
'editor'=>'lisi',
),
'2'=>array(
'id'=>'2',
'title'=>'no3',
'editor'=>'zhangsan',
),
);
查找$a[n]['editor']相同的元素,并将$a[n]['editor']修改成第一次出现的加上1,第二次出现,加上2.如下;
$a = array(
'0'=>array(
'id'=>'0',
'title'=>'no1',
'editor'=>'zhangsan1',
),
'1'=>array(
'id'=>'1',
'title'=>'no2',
'editor'=>'lisi',
),
'2'=>array(
'id'=>'2',
'title'=>'no3',
'editor'=>'zhangsan2',
),
);
'0'=>array(
'id'=>'0',
'title'=>'no1',
'editor'=>'zhangsan',
),
'1'=>array(
'id'=>'1',
'title'=>'no2',
'editor'=>'lisi',
),
'2'=>array(
'id'=>'2',
'title'=>'no3',
'editor'=>'zhangsan',
),
);
查找$a[n]['editor']相同的元素,并将$a[n]['editor']修改成第一次出现的加上1,第二次出现,加上2.如下;
$a = array(
'0'=>array(
'id'=>'0',
'title'=>'no1',
'editor'=>'zhangsan1',
),
'1'=>array(
'id'=>'1',
'title'=>'no2',
'editor'=>'lisi',
),
'2'=>array(
'id'=>'2',
'title'=>'no3',
'editor'=>'zhangsan2',
),
);
<?php/* Created on [2012-5-3] Author[yushuai.niu] */
$a = array (
'0' => array (
'id' => '0',
'title' => 'no1',
'editor' => 'zhangsan', ),
'1' => array (
'id' => '1',
'title' => 'no2',
'editor' => 'lisi', ),
'2' => array (
'id' => '2',
'title' => 'no3',
'editor' => 'zhangsan', ),);$i = 1;
foreach($a as $j => $b){
foreach($b as $k => $c){
if($c == "zhangsan"){
$c .= $i;
$i++;
}
$d[$j][$k] = $c;
}
}
print_r($d);
#Array ( [0] => Array ( [id] => 0 [title] => no1 [editor] => zhangsan1 ) [1] => Array ( [id] => 1 [title] => no2 [editor] => lisi ) [2] => Array ( [id] => 2 [title] => no3 [editor] => zhangsan2 ) )
?>
'0'=>array(
'id'=>'0',
'title'=>'no1',
'editor'=>'zhangsan',
),
'1'=>array(
'id'=>'1',
'title'=>'no2',
'editor'=>'lisi',
),
'2'=>array(
'id'=>'2',
'title'=>'no3',
'editor'=>'zhangsan',
)
);// 寄存每组editor的值和对应的键值
$arr = array();
foreach($a as $key=>&$value)
{
$k = array_search($value['editor'], $arr);
if($k !== false){
// 获取最近一次发现相同值时的后缀数字
$i = substr($a[$k]['editor'], -1, 1);
// 还没有后缀数字的算1
if( ! is_numeric($i) ) {
$i = 1;
// 修改上一次的
$a[$k]['editor'] .= $i++;
}
// 修改本次的发现的重复值
$value['editor'] .= $i;
}
$arr[$key] = $value['editor'];
}
print_r($arr);
'0' => array (
'id' => '0',
'title' => 'no1',
'editor' => 'zhangsan',
),
'1' => array (
'id' => '1',
'title' => 'no2',
'editor' => 'lisi',
),
'2' => array (
'id' => '2',
'title' => 'no3',
'editor' => 'zhangsan',
),
);foreach($a as $i=>$v) $d[$i] = $v['editor'];
foreach(array_count_values($d) as $k=>$v) {
if($v > 1) {
$p = 1;
foreach($d as $i=>$v)
if($v == $k) $a[$i]['editor'] .= $p++;
}
}
print_r($a);Array
(
[0] => Array
(
[id] => 0
[title] => no1
[editor] => zhangsan1
) [1] => Array
(
[id] => 1
[title] => no2
[editor] => lisi
) [2] => Array
(
[id] => 2
[title] => no3
[editor] => zhangsan2
))
arsort($d);
$t = 1;
$i = 0;
while($t) {
$k = key($d);
if(current($d) == ($t = next($d)) || $i) {
if(! $t) $i = 0;
else $a[$k]['editor'] .= ++$i;
}
}