php for和foreach循环只存储最后一个值

时间:2017-08-31 14:30:58

标签: php arrays

我正在循环一个初始数组,并指定我想要的值。然后我将我需要的值存储在一个数组中。然后我将这些值组合成一个新的数组,包括键和值。新数组仅存储已传递给它的所有数据的最后一个条目。

$exampleArray = array();
for ($i = 0; $i < 100; $i++){
    $exampleArray[] = array(
        $A1 =  $Anotherarray[$i][25],
        $A2 = $Anotherarray[$i][26],
        $A3 = $Anotherarray[$i][24],
        $A4 = $Anotherarray[$i][27],
        $A5 = $Anotherarray[$i][28]
    );

    $secondExample = array();

    foreach( $A1 as $i => $val )
    {
        $secondExample[] = array(
            "Field1" => $val,
            "Field2" => ucfirst($A2[$i]),
            "Field3" => ucfirst($A3[$i]),
            "Field4" => ucfirst($A4[$i]),
            "Field5" => ucfirst($A5[$i])
        );
    }

2 个答案:

答案 0 :(得分:3)

您在每次迭代时声明$secondExample为新数组。这样做:

$exampleArray = array();
$secondExample = array();

for ($i = 0; $i < 100; $i++){
    $exampleArray[] = array(
        $A1 = $Anotherarray[$i][25],
        $A2 = $Anotherarray[$i][26],
        $A3 = $Anotherarray[$i][24],
        $A4 = $Anotherarray[$i][27],
        $A5 = $Anotherarray[$i][28]
    );

    $secondExample[$i] = array();
    foreach( $A1 as $j => $val) {
        $secondExample[$i][] = array(
        "Field1" => $val,
        "Field2" => ucfirst($A2[$j]),
        "Field3" => ucfirst($A3[$j]),
        "Field4" => ucfirst($A4[$j]),
        "Field5" => ucfirst($A5[$j])
    );
}

答案 1 :(得分:0)

因为每次循环都会覆盖。使用array_push

 $secondExample = array();

foreach( $A1 as $i => $val )
{
    $varArray = array(
        "Field1" => $val,
        "Field2" => ucfirst($A2[$i]),
        "Field3" => ucfirst($A3[$i]),
        "Field4" => ucfirst($A4[$i]),
        "Field5" => ucfirst($A5[$i])
    );
    array_push($secondExample, $varArray);
}