在for循环(PHP)中使用接下来的两次迭代创建键值对


Creating key value pairs using next two iterations in a for loop (PHP)

我有一个名为$genderAge的字符串值数组,当返回时看起来像这样:-

F, 0-4, 327607378

M, 0- 4,392700793

F, 15-24, 887438943

M, 15- 24,525132614

M, 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

您的$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

如果你的数组一直是3对的组合:性别,年龄范围,成本,你可能想要在循环中增加每3对。它将使您避免相对于数组外索引的错误:

<?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 />";
    }
?>

注意在第一个for循环中使用了$i += 3,它可以读作:

数组中每3项循环一次

这样,您可以将index + n应用于所需的配对($i + 1用于年龄范围,等等)。

首先,您可能希望在关联数组中获得所有这些键值对,包括Sex。下面是如何使用for(){} Loop:

    <?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