Как создать добавить массив в многомерный массив - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь объединить массив в другой. Если бизнес является дочерним для своего сектора.

Моя цель - создать массив, который выглядит следующим образом:

[0] => Array (
    [sector] => 198
    [business] => Array (
        [0] => 201
        )
    )
[1] => Array (
    [sector] => 178
    [business] => Array (
        [0] => 181
        [1] => 182
        )
    )

В настоящее время у меня есть это:

[0] => Array (
    [sector] => 198
    )
[1] => Array (
    [sector] => 178
    )

и это (идентификаторы бизнеса):

Array
(
    [0] => 201
)

Array
(
    [0] => 181
    [1] => 182
)


Мне нужно вложить их в сектор.

Это то, что у меня есть в данный момент

        $targets = array();
        foreach ($taxonomy['sector'] as $sectorKey=>$sector) {
            $getSectorTerm = get_term_by('slug', $sector, 'sector');
            $getSectorId = $getSectorTerm->term_id;

            $targets[] = array('sector'=>$getSectorId, 'business'=>[]);


            foreach ($taxonomy['business'] as $keyBusiness=>$businesses) {
                foreach ($businesses as $key => $business) {
                    $getBusinessTerm = get_term_by('slug', $business, 'sector');
                    $getBusinessId = $getBusinessTerm->term_id;

                    $getParentTerm = get_term( $getBusinessTerm, 'sector' );
                    $businessParentId = $getParentTerm->parent; 

                    if ($businessParentId == $getSectorId) {
                        array_push($targets, $getBusinessId);
                    }

                }

            }
        }

        print_r($targets);
        die;

Вывод

1018

Любая помощь будет высоко ценится.

Спасибо

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Должно быть так: -

    $targets = array();
    foreach ($taxonomy['sector'] as $sectorKey=>$sector) {
        $getSectorTerm = get_term_by('slug', $sector, 'sector');
        $getSectorId = $getSectorTerm->term_id;

        $target_array = array('sector'=>$getSectorId, 'business'=>[]);


        foreach ($taxonomy['business'] as $keyBusiness=>$businesses) {
            foreach ($businesses as $key => $business) {
                $getBusinessTerm = get_term_by('slug', $business, 'sector');
                $getBusinessId = $getBusinessTerm->term_id;

                $getParentTerm = get_term( $getBusinessTerm, 'sector' );
                $businessParentId = $getParentTerm->parent; 

                if ($businessParentId == $getSectorId) {
                    $target_array['business'][] = $getBusinessId;
                }
            }

        }
        $targets[] = $target_array;
    }

    print_r($targets);
    die;
0 голосов
/ 24 марта 2020

Если вы сохраните текущую структуру массива, будет трудно заполнить массив подмассивами. Требуется дополнительный l oop через массив, чтобы найти значение определенного сектора. Вы можете изменить структуру массива, чтобы сделать его более компактным и доступным? Я имею в виду, что компактный массив имеет ключи, равные идентификаторам секторов, а значения - это массивы бизнес-идентификаторов. Например, как это:

[198] => Array (
        [0] => 201
)
[178] => Array (
        [0] => 181
        [1] => 182
)


$targets = array();
foreach ($taxonomy['sector'] as $sectorKey=>$sector) {
    $getSectorTerm = get_term_by('slug', $sector, 'sector');
    $getSectorId = $getSectorTerm->term_id;

    $targets[ $getSectorId ] = [];


    foreach ($taxonomy['business'] as $keyBusiness=>$businesses) {
        foreach ($businesses as $key => $business) {
            $getBusinessTerm = get_term_by('slug', $business, 'sector');
            $getBusinessId = $getBusinessTerm->term_id;

            $getParentTerm = get_term( $getBusinessTerm, 'sector' );
            $businessParentId = $getParentTerm->parent; 

            if ($businessParentId == $getSectorId) {
                $targets[ $getSectorId ][] = $getBusinessId;
            }

        }

    }
}

print_r($targets);
die;

Чтобы получить таблицу:

foreach($targets as $sector => $businesses) {
    echo "Sector ID: $sector<br>";
    foreach( $businesses as $business ) {
        echo "Business ID: $business<br>";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...