在for循环中创建关联数组

时间:2015-12-10 12:29:00

标签: php arrays loops

您好我已经创建了一个内部带有for循环的数组。在数组到达for循环之前,数组内部没有任何数据。我想为我到目前为止所做的事情添加一个关联数组。例如,我的阵列当前输出

[0] => Array
        (
            [0] => Version 5
            [1] => Feb-16
            [2] => gary
            [3] => 80
            [4] => P
        )

我希望它有标题而不是数字

[0] => Array
        (
            Version => Version 5
            Date => Feb-16
            Name => gary
            RandNum => 80
            Letter => P
        }

我不确定我是如何适应我的循环的,如果我的不同专栏这些标题我怎么可能。以下是我目前的代码。它将数组输出到顶部。

 for($i = 0; $i <= 3; $i++){

      for($j = 0; $j <= 4; $j++){

           if ($j == 0){
                $times_table[$i][$j]=  "Version 5" ;
           }
           else if ($j == 1){
                $cur_date = date("M-y", $currentdate);

                $currentdate = strtotime('+1 month', $currentdate);

                $times_table[$i][$j]= "<strong>" . $cur_date . "</strong>" ;
           }
           else{
                    $times_table[$i][$j]=  "gary" ;
           }
           if ($j == 3) {
                    $numbers = mt_rand(1, 100);
                    $times_table[$i][$j]= $numbers ;

           }
           if ($j == 4){

                    if($i == 0 || $i == 3)
                    {
                        $pay = "P";

                         $times_table[$i][$j]= $pay ;
                    }
                    else{
                        $int = "I";

                         $times_table[$i][$j]= $int ;
                    }
           }

      }

 }

4 个答案:

答案 0 :(得分:1)

试试这个..

for($i = 0; $i <= 3; $i++){

             for($j = 0; $j <= 4; $j++){

               if ($j == 0){

                $times_table[$i]['Version']=  "Version 5" ;
            }
                else if ($j == 1){
                $cur_date = date("M-y", $currentdate);

                $currentdate = strtotime('+1 month', $currentdate);

                $times_table[$i]['Date']= "<strong>" . $cur_date . "</strong>" ;


                }
                else{
                    $times_table[$i]['Name']=  "gary" ;
                }
                if ($j == 3) {
                    $numbers = mt_rand(1, 100);
                    $times_table[$i]['RandNum']= $numbers ;

                }
                if ($j == 4){

                    if($i == 0 || $i == 3)
                    {
                        $pay = "P";

                    $times_table[$i]['Letter']= $pay ;
                    }
                    else{
                        $int = "I";

                    $times_table[$i]['Letter']= $int ;

                    }
                }

            }

            }

希望这能解决您的问题。

答案 1 :(得分:1)

在我看来,你的第二个for循环是不需要的。您应该知道可以创建这样的关联数组:

<?php
$times_table = [];
$times_tables[] = [
    'Version' => 'Version 5',
    'Date' => 'Feb-16',
    'Name' => 'gary',
    'RandNum' => '80',
    'Letter' => 'P',
];

要与您的代码匹配:

<?php
$times_table = [];
for($i = 0; $i <= 3; $i++){
    $times_table[$i]['Version']=  "Version 5" ;
    $cur_date = date("M-y", $currentdate);
    $currentdate = strtotime('+1 month', $currentdate);
    $times_table[$i]['Date']= "<strong>" . $cur_date . "</strong>" ;
    $times_table[$i]['Name']=  "gary" ;
    $numbers = mt_rand(1, 100);
    $times_table[$i]['RandNum']= $numbers ;
    switch ($i) {
        case 0:
        case 3:
            $letter = 'P';
        break;
        default:
            $letter = 'I';
    }
    $times_table[$i]['Letter']= $letter;
}

我认为这应该以更清洁的方式做你想做的事情!

答案 2 :(得分:0)

for($i = 0; $i <= 3; $i++){

             for($j = 0; $j <= 4; $j++){

               if ($j == 0){

                $times_table["Version"][$j]=  "Version 5" ;
            }
                else if ($j == 1){
                $cur_date = date("M-y", $currentdate);

                $currentdate = strtotime('+1 month', $currentdate);

                $times_table["Date"][$j]= "<strong>" . $cur_date . "</strong>" ;


                }
                else{
                    $times_table["Name"][$j]=  "gary" ;
                }
                if ($j == 3) {
                    $numbers = mt_rand(1, 100);
                    $times_table["RandNum"][$j]= $numbers ;

                }
                if ($j == 4){

                    if($i == 0 || $i == 3)
                    {
                        $pay = "P";

                    $times_table["Letter"][$j]= $pay ;
                    }
                    else{
                        $int = "I";

                    $times_table["Letter"][$j]= $int ;

                    }
                }

            }

            }

答案 3 :(得分:-1)

您可以像这样创建关联数组:

$a=array("Version"=> "Version 5",
         "Date"=> "Feb-16",
         "Name" => "gary",
         "RandNum" => 80,
         "Letter" => "P"
        )

要在for循环中使用$a['key']来访问此数组。例如。要访问版本5,请使用$a['version']访问2月16日使用$a['Date']