2016-09-28 79 views
0

我有一個名爲$ genderAge字符串值,看起來像這樣的數組迴盪時: -創建鍵值對

樓0-4,327607378

男,0-4,392700793

女,15-24,887438943

男,15-24,525132614

男,25-34歲,621410857

所以對於上面的數組,$ ageRange [0]是「F」。 $ ageRange [1]是「0-4」,依此類推。

我想將它分成兩個數組,$ male_array和$ female_array以及鍵值對。關鍵應該是年齡範圍,價值應該是成本。

$male_array = []; 
    $female_array = []; 

    for ($i = 0; $i < count($genderAge); $i++) { 
     if ($genderAge[i] == 'M') { 
      $male_array[$genderAge[i+1]] = $genderAge[i+2]; 
     } 
     elseif ($genderAge[i] == 'F') { 
      $female_array[$genderAge[i+1]] = $genderAge[i+2]; 
     } 
    } 

    foreach($male_array as $x => $x_value) { 
     echo "Key=" . $x . ", Value=" . $x_value; 
     echo "<br>"; 
    } 

上面沒有任何迴音。我希望它呼應這樣的:

重點= 0-4,值= 392700793

重點= 15-25,值= 525132614

重點= 25-34,值= 621410857

+0

是這應該是一個陣列:'女,0-4,327607378,男,O- 4,392700793,F,15-24,887438943,M,15-24,525132614,M,25-34,621410857'即:$ arr = array(「F」,「0-4」,「327607378」,「M」,「0-4」,「392700793」,「F」,「15-24」,「887438943」 ,「M」,「15-24」,「525132614」,「M」,「25-34」,「621410857」);' – Poiz

+1

你可以通過打印出你的真實數組嗎?你想要什麼樣的預期結果?張貼也是。 –

回答

0

如果陣列是不斷3對組合:性別,年齡範圍,成本,你可能希望增加你的循環中的每3對。這將節省您相對於出數組索引的錯誤:第一for

<?php 
    $GENDER_MALE = 'M'; 
    $GENDER_FEMALE = 'F'; 

    $genderAge  = ['F', '0-4', '327607378', 'M', '0-4', '392700793', 'F', '15-24', '887438943', 'M', '15-24', '525132614', 'M', '25-34', '621410857']; 
    $male_array  = []; 
    $female_array = []; 
    $size   = count($genderAge); 

    # Format the male/female array 
    for($i = 0; $i < $size; $i += 3) { 
     $gender  = $genderAge[$i];  // M or F 
     $ageRange = $genderAge[$i + 1]; // 0-4, 14-18, ... 
     $cost  = $genderAge[$i + 2]; // 897726, 10927, ... 

     if($gender == $GENDER_MALE) { 
      $male_array[$ageRange] = $cost; 
     } 
     else if($gender == $GENDER_FEMALE) { 
      $female_array[$ageRange] = $cost; 
     } 
    } 

    # Print the male/female formatted array 
    foreach($male_array as $key => $value) { 
     echo "Age range : $key - cost = $value <br />"; 
    } 
?> 

通知可以讀取使用$i += 3爲:

環路我的數組

每3個項目

這樣,您可以將您的索引+ n相對於您需要的對($i + 1用於年齡範圍等)應用。

1

您的$genderAge應該是這種類型的數組,因此您可以將值存儲在單獨的變量中,並且可以將其用於其他目的。

擬議陣列:

$genderAge = array("F", "0-4", "327607378", "M", "0-4", "392700793", "F", "15-24", "887438943","M", "15-24", "525132614","M","25-34", "621410857"); 

For循環操縱陣列之上,以保存該值。

這裏您必須使用$i作爲增量運算符+1。您不能像您使用的那樣單獨使用i

PHP代碼:

<?php 
$genderAge = array("F", "0-4", "327607378", "M", "0-4", "392700793", "F", "15-24", "887438943","M", "15-24", "525132614","M","25-34", "621410857"); 
$male_array = []; 
$female_array = []; 

for ($i = 0; $i < count($genderAge); $i++) { 
    if ($genderAge[$i] == 'M') { 
     $male_array[$genderAge[$i+1]] = $genderAge[$i+2]; 
    } 
    elseif ($genderAge[$i] == 'F') { 
     $female_array[$genderAge[$i+1]] = $genderAge[$i+2]; 
    } 
} 

echo 'M Values'.'<br>'; 
foreach($male_array as $x => $x_value) { 
    echo "Key=" . $x . ", Value=" . $x_value; 
    echo "<br>"; 
} 
echo '<br>'; 
echo 'F Values'.'<br>'; 
foreach($female_array as $y=> $y_value) { 
    echo "Key=" . $y . ", Value=" . $y_value; 
    echo "<br>"; 
} 
echo '<br>'; 
?> 

輸出:

M Values 
Key=0-4, Value=392700793 
Key=15-24, Value=525132614 
Key=25-34, Value=621410857 

F Values 
Key=0-4, Value=327607378 
Key=15-24, Value=887438943 
+0

大聲笑我不能相信我忘了「我」也需要一個美元符號。這樣的菜鳥錯誤。謝謝! :) – helpmeplz

+0

很高興幫助你。如果您發現我的解決方案很有用,您可以接受它,以便它也能幫助其他人。 –

+0

@安南。你有爆炸,我沒有用過,我更喜歡它是一個數組。我們兩個人都在單獨做同樣的事情。我正在編寫額外的代碼來打印它的值。 –

0

首先,您可能想要在關聯數組中獲得包括Sex在內的所有鍵值對,而不是。以下是如何可能使用for(){}環路來完成:

<?php 

     $arr = array("F"," 0-4", "327607378", 
         "M", "0-4", "392700793", 
         "F", "15-24", "887438943", 
         "M", "15-24", "525132614", 
         "M", "25-34", "621410857"); 

     $all = array(); 
     for($a=0, $b=1, $c=2; $a <= (count($arr)-3); $a+=3, $b+=3, $c+=3){ 
      $temp = array(
       "sex"  => $arr[$a], 
       "key"  => $arr[$b], 
       "value"  => $arr[$c] 
      ); 
      $all[] = $temp; 
     } 

     var_dump($all); 

var_dump($all);產量召喚:

 array (size=5) 
      0 => 
      array (size=3) 
       'sex' => string 'F' (length=1) 
       'key' => string ' 0-4' (length=4) 
       'value' => string '327607378' (length=9) 
      1 => 
      array (size=3) 
       'sex' => string 'M' (length=1) 
       'key' => string '0-4' (length=3) 
       'value' => string '392700793' (length=9) 
      2 => 
      array (size=3) 
       'sex' => string 'F' (length=1) 
       'key' => string '15-24' (length=5) 
       'value' => string '887438943' (length=9) 
      3 => 
      array (size=3) 
       'sex' => string 'M' (length=1) 
       'key' => string '15-24' (length=5) 
       'value' => string '525132614' (length=9) 
      4 => 
      array (size=3) 
       'sex' => string 'M' (length=1) 
       'key' => string '25-34' (length=5) 
       'value' => string '621410857' (length=9) 

現在,呼應了一些數據,你可以做像這樣:

<?php 

     foreach($all as $iKey=>$arrKv){ 
      echo "sex : " . $arrKv["sex"]  . "<br />"   . PHP_EOL; 
      echo "Key : " . $arrKv["key"]  . "<br />"   . PHP_EOL; 
      echo "Value : " . $arrKv["value"] . "<br /><br />" . PHP_EOL; 
     } 

每個echo()的迴路中的化合物結果以上的產率:

 sex : F 
     Key : 0-4 
     Value : 327607378 

     sex : M 
     Key : 0-4 
     Value : 392700793 

     sex : F 
     Key : 15-24 
     Value : 887438943 

     sex : M 
     Key : 15-24 
     Value : 525132614 

     sex : M 
     Key : 25-34 
     Value : 621410857