Home > Backend Development > PHP Tutorial > PHP array operation deduplication T.T

PHP array operation deduplication T.T

WBOY
Release: 2016-08-25 10:37:30
Original
1147 people have browsed it

Masters, my array looks like this
array(2) {
[14] => array(6) {

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

}
[3] => array(6) {

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

}
}

I want it to be

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

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

}
[3] => array(6) {

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

}
}

Is this Jiang Zi difficult? T.T Does anyone know how to do it? Q.Q

Reply content:

Masters, my array looks like this
array(2) {
[14] => array(6) {

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

}
[3] => array(6) {

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

}
}

I want it to be

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

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

}
[3] => array(6) {

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

}
}

Is this Jiang Zi difficult? T.T Does anyone know how to do it? Q.Q

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

I didn’t see the question clearly, here is the revised answer

<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>
Copy after login

It means that the job_name field in this two-dimensional array, if there are duplicates, just set the corresponding number of repetitions after the repetition, right?

<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>
Copy after login

<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>
Copy after login

Error checking related to input arrays has not been processed yet

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

PHP array operation deduplication 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>
Copy after login
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template