Проблема с лицом во время получения уникального значения из цикла foreach - PullRequest
0 голосов
/ 05 июля 2019

Я столкнулся с проблемой при получении уникального значения в цикле foreach.

Ниже приводится мой массив.

Array
(
    [20] => Array
        (
            [0] => Array
                (
                    [id] => 4
                    [category_title] => Specialist Range
                    [parent] => 20
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:04:17
                )

            [1] => Array
                (
                    [id] => 4
                    [category_title] => Specialist Range
                    [parent] => 20
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:04:17
                )

            [2] => Array
                (
                    [id] => 4
                    [category_title] => Specialist Range
                    [parent] => 20
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:04:17
                )

            [3] => Array
                (
                    [id] => 6
                    [category_title] => Cater Foil Rolls
                    [parent] => 20
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:04:24
                )

        )

    [21] => Array
        (
            [8] => Array
                (
                    [id] => 24
                    [category_title] => Specialist Range
                    [parent] => 21
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:07:59
                )

            [9] => Array
                (
                    [id] => 24
                    [category_title] => Specialist Range
                    [parent] => 21
                    [front_active] => 1
                    [category_date] => 2019-05-21 04:07:59
                )



        )


)

Я написал следующий скрипт для получения уникального значения в цикле

$catArray = array();
foreach($catagory_list as $key=>$catagory){

        $catArray[$catagory['parent']][$key] = $catagory;
} 
ksort($catArray, SORT_NUMERIC);

foreach ($catArray as $key => $value) {

    if($key == 20 ){ 
        $catName ='local';
    }elseif ($key == 21) {
        $catName ='interstate';
    }elseif ($key == 22) {
        $catName ='wholesale';
    }elseif ($key == 23) {
        $catName ='tst';
    }

    //echo $key;

    foreach(array_unique($value) as $keys => $valuess){
        echo $valuess['category_title'];
        ?>
                <tr class="table_header">
                    <th><?php echo $catName." - ".$valuess['category_title'];?> </th>
                </tr>
    <?php

    }
}

Проблема в том, что 20 имеет 4 заголовка category_title, но когда я использовал array_unique Cater Foil Rolls заголовок категории первого родительского массива не отображается.

Output только дисплей

Специализированный диапазон не отображается (Cater Foil Rolls)

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Если вы пытаетесь найти уникальные записи в этом вложенном массиве, то я бы выделил для вашего ассоциативного массива значение «id». Если вы только пытаетесь найти уникальный category_title, то я бы отключил значение "category_title". В любом случае я бы использовал функциональность связанного массива, чтобы гарантировать уникальность любого выбранного вами ключа. Затем вы можете применить сортировку и т. Д. К результату.

// find first unique records
$result = [];
foreach($parents as $key1=>$child1) {
    foreach($child1 as $key2=>$child2) {
        if(!isset($result[$child2['id']])) {
            $result[$child2['id']] = $child2;
        }
    }
}

// result = # => record

OR

// find first unique categories
$result = [];
foreach($parents as $key1=>$child1) {
    foreach($child1 as $key2=>$child2) {
        if(!isset($result[$child2['category_title']])) {
            $result[$child2['category_title']] = $child2;
        }
    }
}
// result = category => record
0 голосов
/ 05 июля 2019

Я не уверен, что array_unique работает с многомерными массивами.

См. Этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...