Как получить индекс одного массива и сделать его значением для другого

$Towns = ['Plovdiv', '40', 'Pernik', '20', 'Vidin', '8', 'Sliven', '44', 'Plovdiv', '1', 'Vidin', '7', 'Chirpan', '0'];    
$emptyTown = [];    
$emptyIncome = [];    
$calculated = [];    
$rowCount = 0;    

foreach ($Towns as $town){    
    $rowCount++;
    $rowCount2++;
    if($rowCount % 2){
        $emptyTown[$town] = '';
    }else{   
        $emptyIncome[$town] = ''; 
    }
}

Вот как далеко мне удалось пройти. Моя идея состоит в том, чтобы получить название каждого города и сохранить его в массиве в качестве ключа, и каждый номер - это ДОХОД города. Так что мне нужно что-то вроде

Plovdiv => 40
Pernik => 20
Vidin => 8
Sliven => 44
Plovdiv => 1
Vidin => 7
Chirpan => 0

Понятия не имею, я не могу объяснить, как это сделать самому себе. Лучшая идея, которую я придумал, - сохранить их в двух массивах, а затем как-то объединить. Ребята, не могли бы вы объяснить, как вы можете это сделать?

3 ответа

Использовать for цикл, который увеличивается на 2.

$TownIncomes = [];
for ($i = 0; $i < count($Towns); $i += 2) {
    $TownIncomes[$Towns[$i]] = $Towns[$i+1];
}
$data = ['Plovdiv', '40', 'Pernik', '20', 'Vidin', '8', 'Sliven', '44', 
'Plovdiv', '1', 'Vidin', '7', 'Chirpan', '0'];
$towns = [];

$counter = 0;
foreach($data as $index => $value) {
    if($counter == 0){
        $towns[$value] = $data[$index + 1];
        $counter++;
    }
    $counter = 0;
}

print_r($towns); //Array ( [Plovdiv] => 1 [Pernik] => 20 [Vidin] => 7 
[Sliven] => 44 [Chirpan] => 0 )  

Я немного изменил рефакторинг... однако индексы не могут иметь одинаковое значение, поэтому дублированные Видин и Пловдив перезаписывают исходные.

Поиграйте с этим, и вы сможете заставить его работать...

$towns[$value][] = $data[$index + 1]; <---- doing something like that

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

Ваши данные в этом формате и не могут быть изменены? то есть. "город", "значение", "город", "значение"...?

С помощью foreach проверить, $key%2 равняется 0

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

    if($key%2 == 0){

    $new[$value] = $Towns[$key + 1];    

    }

}

Другие вопросы по тегам