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

PHP array operation deduplication T.T

WBOY
WBOYOriginal
2016-08-25 10:37:301112browse

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

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

}
[3] => array(6) {

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

}
}

I want it to be

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

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

}
[3] => array(6) {

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

}
}

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>

}
[3] => array(6) {

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

}
}

I want it to be

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

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

}
[3] => array(6) {

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

}
}

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>

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>

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>

<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>

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>

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>
Statement:
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