PHP数组操作去重 T.T

WBOY
Freigeben: 2016-08-25 10:37:30
Original
1075 Leute haben es durchsucht

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

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

}
[3] => array(6) {

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

}
}

我想让它变成

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

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

}
[3] => array(6) {

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

}
}

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

回复内容:

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

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

}
[3] => array(6) {

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

}
}

我想让它变成

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

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

}
[3] => array(6) {

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

}
}

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

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

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

<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>
Nach dem Login kopieren

意思就是这个二维数组中的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>
Nach dem Login kopieren

<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>
Nach dem Login kopieren

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

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

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>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!