Heim  >  Artikel  >  Backend-Entwicklung  >  PHP数组操作去重 T.T

PHP数组操作去重 T.T

WBOY
WBOYOriginal
2016-08-25 10:37:301067Durchsuche

大神们 我的数组长这个样子
array(2) {
[14] => array(6) {

<code>["job_name"] => string(44) "苹果,香蕉,苹果"</code>

}
[3] => array(6) {

<code>["job_name"] => string(44) "梨子,梨子,西红柿"</code>

}
}

我想让它变成

array(2) {
[14] => array(6) {

<code>["job_name"] => string(44) "苹果2,香蕉1"</code>

}
[3] => array(6) {

<code>["job_name"] => string(44) "梨子2,西红柿1"</code>

}
}

这个酱紫 会不会很难T.T 有朋友会么Q.Q

回复内容:

大神们 我的数组长这个样子
array(2) {
[14] => array(6) {

<code>["job_name"] => string(44) "苹果,香蕉,苹果"</code>

}
[3] => array(6) {

<code>["job_name"] => string(44) "梨子,梨子,西红柿"</code>

}
}

我想让它变成

array(2) {
[14] => array(6) {

<code>["job_name"] => string(44) "苹果2,香蕉1"</code>

}
[3] => array(6) {

<code>["job_name"] => string(44) "梨子2,西红柿1"</code>

}
}

这个酱紫 会不会很难T.T 有朋友会么Q.Q

<code class="php">array_walk($arr, function(&$item) {
    $item['job_name'] = join(',', array_unique(explode(',', $item['job_name'])));
});</code>

没看清楚题目, 下面是修改后的答案

<code class="php">array_walk($arr, function(&$item) {
    $after = array_values(array_unique(explode(',', $item['job_name'])));
    foreach ($after as $key=>$value) {
        preg_match_all("/$value/", $item['job_name'], $matches);
        $after[$key] = $value . count($matches[0]);
    }
    $item['job_name'] = join(',', $after);
});</code>

意思就是这个二维数组中的job_name字段,如果有重复的,就在重复的后面设置对应的重复数即可,对不!

<code class="php">foreach ($arr as $fruits){
    $fruits_array = explode(',',$fruits['job_name']);
    $count_array = array();
    foreach ($fruits_array as $fruit){
        $count_array[$fruit][] =1;
    }
    $sum_data =array();
    foreach ($count_array as $fruit=>$fruit_array){
        $sum_data[] = $fruit.  count($fruit_array);
    }
    $sum_data = implode(',',$sum_data);
    $return_data[]["job_name"] = $sum_data;

}</code>

<code>function dealArr($arr=array()){
    foreach ($arr as $key => $value) {
        $a0[$key] = explode(',',$value['job_name']);//分割字符串
        $a1[$key] = array_count_values($a0[$key]);//统计个数
        $temp=array();
        foreach ($a1[$key] as $key2 => $value2) {
            $temp[$key2]=$key2.$value2;
        }
        $res[$key]['job_name']=implode(',',$temp);//字符串转数组
        
    } 
    return $res;
}</code>

输入数组相关的错误检查暂未处理

<code>$arr[14]['job_name']="苹果,香蕉,苹果";
$arr[3]['job_name']="梨子,梨子,西红柿";
var_dump(dealArr($arr));
</code>

PHP数组操作去重 T.T

<code>foreach ($arr as &$val){
    $job_name_array = explode(',',$val['job_name']);
    $return = array_count_values($job_name_array);
    $str = '';
    foreach ($return as $key => $value){
        $str .= $key.$value.',';
    }
    $str = rtrim($str,",");
    $val['job_name'] = $str;
 }</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn