$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
我不知道我无法解释自己做这件事的方法。我想出的最好的想法是将它们保存在两个数组中,然后以某种方式合并它们。 你能解释一下你可以做些什么吗?
答案 0 :(得分:3)
使用递增2的for
循环。
$TownIncomes = [];
for ($i = 0; $i < count($Towns); $i += 2) {
$TownIncomes[$Towns[$i]] = $Towns[$i+1];
}
答案 1 :(得分: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 )
我稍微重构了一下......但是,索引不能具有相同的值,因此重复的Vidin和Plovdiv会覆盖初始值。
玩这个游戏,你应该能够让它发挥作用......
$towns[$value][] = $data[$index + 1]; <---- doing something like that
如果他们有多个收入,你会允许你向城镇添加多个值,但是需要对代码进行一些重构才能工作。
您的数据是否采用该格式且无法更改?即。 'town','value','town','value'......?
答案 2 :(得分:0)
使用foreach
检查$key%2
是否等于0
foreach($Towns as $key => $value){
if($key%2 == 0){
$new[$value] = $Towns[$key + 1];
}
}