2017-09-22 86 views
1
$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 

我沒有線索我不能解釋如何做到這一點自己。我想出的最好的想法是將它們保存在兩個數組中,然後以某種方式合併它們。 你們可以向我解釋一些你可能做到的方法嗎?

+1

您在Towns陣列中多次使用同一個名稱。您不能將其存儲在具有相同密鑰的陣列中多次。否則,所有答案都是正確的 –

回答

3

使用for循環,每次加2

$TownIncomes = []; 
for ($i = 0; $i < count($Towns); $i += 2) { 
    $TownIncomes[$Towns[$i]] = $Towns[$i+1]; 
} 
0

使用foreach檢查是否$key%2等於0

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

    if($key%2 == 0){ 

    $new[$value] = $Towns[$key + 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) 

我已經重構編輯它稍微...但是,索引不能有相同的價值,所以重複的維丁和普羅夫迪夫覆蓋最初的。

有這個戲,你應該能夠得到它的工作...

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

將允許您multple值添加到,如果他們有多個收入的城鎮,但將需要一些重構代碼工作。

您的數據是否爲該格式,無法更改?即。 '城市','價值','城市','價值'......?

相關問題