Как создать древовидную иерархию в php codeigniter? - PullRequest
1 голос
/ 13 мая 2019

У меня есть такой массив:

Array
(
    [0] => Array
        (
            [id] => 1
            [child_name] => "Emma"
            [parent_name] => "Mr Brown"
        )

    [1] => Array
        (
           [id] => 2
            [child_name] => "John"
            [parent_name] => "Mr Brown"
        )

    [2] => Array
        (
            [id] => 3
            [child_name] => "Joseph"
            [parent_name] => "Mr Thomas"
        )

    [3] => Array
        (
            [id] => 4
            [child_name] => "Pretty"
            [parent_name] => "Mr Thomas"
        )

    [4] => Array
        (
            [id] => 5
            [child_name] => "Raphel"
            [parent_name] => "Mr Brown"
        )

    [5] => Array
        (
            [id] => 6
            [child_name] => "Tommy"
            [parent_name] => "Mr Thomas"
        )

    [6] => Array
        (
            [id] => 7
            [child_name] => "Tim"
            [parent_name] => "Mr Thomas"
        )
)

Из этого массива я хочу сгенерировать вид, подобный этому:

enter image description here parent_nameполе становится главной категорией, а child_name становится подкатегорией.Перед именами стоят флажки.

Как мне этого добиться?У меня нет большого опыта в php.Я кодирую в узле js, но эта задача должна быть выполнена в php.Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Попробуйте, здесь я использую простой метод index () и передаю данные для просмотра файла в качестве примера.

Вы можете использовать приведенный ниже код и протестировать в своем codeigniter.

Надеюсь, это сработает для вас.

Welcome.php (Контроллер)

public function index()
{
    $array = [
        [
            'id' => 1,
            'child_name' => "Emma",
            'parent_name' => "Mr Brown",
        ],
        [
            'id' => 2,
            'child_name' => "John",
            'parent_name' => "Mr Brown",
        ],
        [
            'id' => 3,
            'child_name' => "Joseph",
            'parent_name' => "Mr Thomas",
        ],
        [
            'id' => 4,
            'child_name' => "Pretty",
            'parent_name' => "Mr Thomas",
        ],
        [
            'id' => 5,
            'child_name' => "Raphel",
            'parent_name' => "Mr Brown",
        ],
        [
            'id' => 6,
            'child_name' => "Tommy",
            'parent_name' => "Mr Thomas",
        ],
        [
            'id' => 7,
            'child_name' => "Tim",
            'parent_name' => "Mr Thomas",
        ],
        [
            'id' => 8,
            'child_name' => "William",
            'parent_name' => "",
        ],
    ];

    $resultArray = [];
    foreach ($array as $key => $value) {
        if($value['parent_name'] != ''){
            $resultArray[$value['parent_name']][] = $value;
        }else{
            $resultArray[$value['child_name']] = [];
        }
    }
    $data = ['resultArray' => $resultArray];

    $this->load->view('welcome_message', $data);
}   

welcome_message.php (просмотр)

<div>
    <form name='sample'>
        <?php 
        foreach ($resultArray as $parentKey => $parentValue) {
            echo '<input type="checkbox" name="'.$parentKey.'" value="'.$parentKey.'">'.$parentKey.'<br>';
            foreach ($parentValue as $childKey => $childValue) {
                echo '&nbsp;&nbsp;&nbsp;<input type="checkbox" name="'.$childValue['child_name'].'" value="'.$childValue['child_name'].'">'.$childValue['child_name'].'<br>';
            }
        }
        ?>
    </form>
</div>

выход

enter image description here

1 голос
/ 13 мая 2019

Отметьте это,

Зациклите ваш массив, он будет захватывать все значения с одинаковым parent_name.

$result = [];
foreach ($array as $key => $value) {
    $result[$value['parent_name']][] = $value['child_name']; // loop your array
}

Должно работать.

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