2017-09-22 8 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

타운 어레이에서 동일한 이름을 여러 번 사용했습니다. 동일한 키를 여러 번 배열에 저장할 수 없습니다. 그렇지 않으면 모든 대답이 정확합니다. –

답변

3

은 증가 2.

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

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) 

나는했습니다 리팩터링 동일 foreach 체크 $key%2 여부를 사용하는 for 루프를 사용하여 그러나 인덱스는 동일한 값을 가질 수 없으므로 중복 된 Vidin 및 Plovdiv는 초기 값을 덮어 씁니다.

이있는 플레이를하고 당신은 작업을 얻을 수 있어야합니다 ...

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

당신이 그들이 여러 소득이있는 경우 마을에 multple 값을 추가 할 수 있지만, 어떤 리팩토링이 필요합니다 작동 코드.

데이터가 해당 형식으로되어있어서 변경할 수 없습니까? 즉. '마을', '가치', '마을', '가치'...?