Как получить индекс одного массива и сделать его значением для другого
$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];
}
}