Как зациклить многомерный массив для получения значений - PullRequest
1 голос
/ 13 апреля 2019

У меня есть этот многомерный массив, и я пытаюсь преобразовать его в массив, указанный ниже

Array
(
    [id] => Array
        (
            [0] => 1
            [1] => 3
        )
    [team_id] => Array
        (
            [0] => 654868479
            [1] => 463733228
        )
    [seed] => Array
        (
            [0] => 1
            [1] => 2
        )
)

Я хочу следующий результат

Array
(
    [0] => Array
        (
            [id] => 1
            [team_id] => 654868479
            [seed] => 1
        )
    [1] => Array
        (
            [id] => 3
            [team_id] => 463733228
            [seed] => 3
        )
)

Вот то, чего я достиг до сих пор. Я действительно хочу, чтобы массив $seeded[] был того же формата, который требуется для отправки update_batch. Который в конечном итоге будет обновлять записи базы данных.

$seeds = $this->input->post();
$i=0;
foreach ($seeds as $key => $value){
    if(!empty($key) && !empty($value)){
        for($i=0; $i=5; $i++) {
            $seeded[] = array(
                'id' => (id go here),
                'tournament_id' => $tournament_id,
                'stage_id' => $stage_id,
                'seed_id' => (seed go here),
                'team_name' => (team_id go here),
            );
        }
        $this->db->update_batch('tournament_seed', $seeded, 'id');
    }
}

Ответы [ 2 ]

2 голосов
/ 14 апреля 2019

Итерируйте массив и преобразуйте его, используя приведенный ниже код.

$seeded= array();
for($i =0; $i < count($seeds['id']); $i++){
    $tempArr['id'] = $seeds['id'][$i];
    $tempArr['team_id'] = $seeds['team_id'][$i];
    $tempArr['seed'] = $seeds['seed'][$i];
    $seeded[] = $tempArr;
}
0 голосов
/ 14 апреля 2019

Я написал функцию, которая позволит вам преобразовать любой массив с аналогичной структурой к тому, что у вас есть выше, в массив той формы, которую вы ищете.

Вы можете построить свой массив следующим образом:

$arr = [
    'id'      => [1, 3],
    'team_id' => [654868479, 463733228],
    'seed'    => [1, 2],
];

function array_flatten($arr) {
    $res = [];
    foreach($arr as $id => $valuesArray) {
        foreach($valuesArray as $index => $value)
            $res[$index][$id] = $value;
    }
    return $res;
}

print_r(array_flatten($arr));

Надеюсь, это поможет,

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