如何获取一个数组的索引并将其赋值给另一个数组

时间:2017-09-22 09:11:34

标签: php logic associative-array array-merge array-key

$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 个答案:

答案 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];    

    }

}