Как получить уникальное значение в массиве в php? - PullRequest
2 голосов
/ 10 июня 2019

Как получить уникальные значения в многомерном массиве? Мы должны получать только уникальные значения в нескольких массивах через запятую. проверьте ниже массив

Array
(
    [0] => Array
        (
            [product_id] => BAT0002
            [vendor_id] => 1,2,3,4
        )

    [1] => Array
        (
            [product_id] => BAT0003
            [vendor_id] => 3
        )

    [2] => Array
        (
            [product_id] => BAT0004
            [vendor_id] => 1,2,3
        )

)

Код: -

$vendor_id = array();
foreach ($rfq_product_master_data_array as $rfq_data_array) 
{
    $product_id = $rfq_data_array['product_id'];
    $vendor_id[] = $rfq_data_array['vendor_id'];

}
$uniquePids = array_unique($vendor_id);
echo "<PRE>";
print_r($uniquePids);

Фактический результат : -

Array
(
    [0] => 1,2,3,4
    [1] => 3
    [2] => 1,2,3
)

Ожидаемый результат: -

Array
    (
        [0] => 1,2,3,4
    )

Ответы [ 3 ]

2 голосов
/ 10 июня 2019

Вы должны выполнить приведенную ниже модификацию в foreach() и код после этого:

foreach ($rfq_product_master_data_array as $rfq_data_array) 
{
    $product_id = $rfq_data_array['product_id'];

    $explodedArray = explode(',',$rfq_data_array['vendor_id']);
    foreach($explodedArray as $value){
        $vendor_id[$value] = $value;
    }
}
print_r($vendor_id); //so you can use it further directly.

//if you want comma separated string then

echo $uniquePids = implode(',',array_values($vendor_id));

Особые примечания: это даст вам разделенную запятыми строкувсе уникальные vendor_id в каждом случае, как предположим, если у вас есть

Array
(
    [0] => 1,2,3,4
    [1] => 5
    [2] => 1,2,6,7
)

, он выдаст: - 1,2,3,4,5,6,7

1 голос
/ 10 июня 2019

Вы можете просто использовать встроенную функцию массива:

$data = //your data array

$res1[] = implode(',',array_unique(explode(',',implode(',',array_column($data,"vendor_id")))));

//array_column : to get single column - vendor_id
//implode : to combine all vendor ids
//explode : to split ids into array
//array_unique : to get unique values
//implode : to combine unique values

Тогда результат всей функции, установленной в массив $ res1 [] с индексом o

var_dump($res1);

Ожидаемый результатв кратком коде:

Array
(
    [0] => 1,2,3,4
)
0 голосов
/ 10 июня 2019

Делай так:

$vendor_ids = array();
foreach ($rfq_product_master_data_array as $rfq_data_array) 
{
    $product_id = $rfq_data_array['product_id'];
    $vendor_ids = array_merge($vendor_ids, explode(",", $rfq_data_array['vendor_id']));
}
$uniquePids = array_unique($vendor_ids);
echo "<PRE>";
print_r($uniquePids);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...