在多维数组中找到重复的值,并使用PHP组合用逗号分隔的ID,并相应地使用PHP

我有一个多维数组,该数组在从数据库动态调用中列出,需要在唯一的value的条件基础上应用过滤器,并且它们的ID合并并以逗号分隔,从而获得以下期望的结果。 / p>

$arr = array();

$arr[0]['attribute'] = 'A';
$arr[0]['value'] = array('tenghao','Yuncheng','TAIFENG','Xinsheng','Laiwu Wanxin');
$arr[0]['ID'] = array(3561,3568,3560,3567,3569);

$arr[1]['attribute'] = 'B';
$arr[1]['value'] = array('Red,Red','Red','Red');    
$arr[1]['ID'] = array(3567,3569,3561,3560);

$arr[2]['attribute'] = 'C';
$arr[2]['value'] = array("90%","80%","80%-100%","90%","100%");    
$arr[2]['ID'] = array(3567,3560);

所需结果

Array
(
    [0] => Array
        (
            [attribute] => A
            [value] => Array
                (
                    [0] => tenghao
                    [1] => Yuncheng
                    [2] => TAIFENG
                    [3] => Xinsheng
                    [4] => Laiwu Wanxin
                )

            [ID] => Array
                (
                    [0] => 3561
                    [1] => 3568
                    [2] => 3560
                    [3] => 3567
                    [4] => 3569
                )

        )

    [1] => Array
        (
            [attribute] => B
            [value] => Array
                (
                    [0] => Red,Red
                    [1] => Red
                )

            [ID] => Array
                (
                    [0] => 3567
                    [1] => 3569,3560
                )

        )

    [2] => Array
        (
            [attribute] => C
            [value] => Array
                (
                    [0] => 90%
                    [1] => 80%
                    [2] => 80%-100%
                    [3] => 100%
                )

            [ID] => Array
                (
                    [0] => 3567,3568
                    [1] => 3569
                    [2] => 3561
                    [3] => 3560
                )

        )

)
xiaoxin_88 回答:在多维数组中找到重复的值,并使用PHP组合用逗号分隔的ID,并相应地使用PHP

您可以使用下一个代码获取结果:

$ar_res  = []; 

foreach($arr as $ind => $row){  

    $vals = [];    // array with unique values
    $ids = [];     // array with joined ids

    $ar_res[$ind]['attribute'] = $row['attribute'];     // copy attribute field

    foreach($row['value'] as $key => $val){

        // analysing each value of each row  

        if (in_array($val,$vals)){   
        // if it's an old value
        // then join corresponded ID

            $ids[array_search($val,$vals)] .= ','.$row['ID'][$key];
        } else { 
            // if this is a new value 
            // then add corresponded ID with value in both arrays 

            $vals[] = $val;
            $ids[] = $row['ID'][$key];  
        } 
    }
    // resultant array
    $ar_res[$ind]['value'] = $vals;
    $ar_res[$ind]['ID'] = $ids;
} 

Demo

本文链接:https://www.f2er.com/3080004.html

大家都在问