【问题标题】:How to create 2 dimensional arrays using a FOR loop in PHP?如何在 PHP 中使用 FOR 循环创建二维数组?
【发布时间】:2013-03-26 06:49:13
【问题描述】:

这是存储数据库值的数组:

$dataTitle[0] = "TIR";
$dataTitle[1] = "OIL";
$dataTitle[2] = "SPK";

$dataDesc[0] = "Tires";
$dataDesc[1] = "Oil";
$dataDesc[2] = "Spark Plugs";

$dataValue[0] = "100";
$dataValue[1] = "10";
$dataValue[2] = "4";

我可以使用以下方法手动将数据插入 2D 数组,但如果我要插入 100 条或更多行记录,它就不起作用。这就是为什么下面需要 FOR 循环的原因。

$ResultView = array(array($dataTitle[0], $dataDesc[0], $dataValue[0]),
                array($dataTitle[1], $dataDesc[1], $dataValue[1]),
                    array($dataTitle[2], $dataDesc[2], $dataValue[2])
               );

如果使用下面的 FOR LOOP,则二维数组只存储最后一行记录,省略了第一行和第二行记录。

for ($i=0; $i<=2; $i++) {
          $ResultView = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i])
               );
    }

当我为上面的 for 循环发出下面的输出脚本时,我得到了第 3 行的输出值并且缺少第 1 行和第 2 行结果。请帮忙!

for ($row=0; $row<=2; $row++) {

    for ($col=0; $col<=2; $col++) { 

        echo $ResultView[$row][$col]."&nbsp | ";
    }

    echo '<br />';
}

但是,我正在寻找一种使用 FOR 循环代替上述方法的方法。怎么样?

实际输出为:

Row 1 => TIR | Tires | 100 
Row 2 => OIL | Oil | 10 
Row 3 => SPK | Spark Plugs | 4

请指教。

【问题讨论】:

  • 您的数据不属于任何模式。您是否有任何数据源,例如数据库等...?
  • 这是一个DB数据的例子。输出为 Row1 => TIR |轮胎 | 100 行 2 => 油 |石油 | 10 行 3 => SPK |火花塞 | 4
  • 尝试使用array_push()
  • 好的。假设我有存储此数据库数据的数组。 $data[0] = "TIR" , $data[1] = "轮胎", $data[2] = "100"
  • 要有数据源才能实现你想要的模式

标签: php arrays for-loop


【解决方案1】:

做起来

 for ($i=0; $i<=2; $i++) {
      $ResultView[] = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i])
           );
       }

【讨论】:

  • 嗨@tumbernirmal,感谢您的回答。我复制了完全相同的内容,但是当我尝试为其制作输出时。它没有向我显示正确的结果。输出示例“ echo $ResultView[0]; echo '
    '; echo $ResultView[1];
  • 即使我试过这个 "echo $ResultView[0][1]; echo '
    '; echo $ResultView[1][1]; " 它没有显示输出值.奇怪!!
  • 你在 echo $ResultView[0] 中想要什么值;
  • 我想要包含数据值的行的输出。
  • 刚刚更新了上面输出命令的问题。请指教。
【解决方案2】:

这是最终解决方案

  $dataTitle = array('TIR','OIL','SPK');
  $dataDesc=array('Tires','Oil','Spark Plugs'); 
 $dataValue=array('100','10','4');
 for ($i=0; $i<=2; $i++) { 
 $ResultView[] = array(array($dataTitle[$i], $dataDesc[$i], $dataValue[$i])); 
} 
     for ($row=0; $row<=2; $row++) 
     {   
         for ($col=0; $col<=2; $col++) 
         { 
              echo $ResultView[$row][0][$col]."  | "; 
          } 
   echo '<br />'; }

【讨论】:

  • 如果数组大小不同怎么办?
【解决方案3】:

如果您的数据库结果行作为数组返回,那么您应该能够遍历结果并将它们推送到您的产品数组中。

// assuming $results contains your DB response
$products = array();
for ($i = 0; $i < count($results); $i++) {
     $products[] = $results[$i];  // or whatever method you use to fetch a row
}

虽然您的数据库结果可能只是像多维数组一样使用。

【讨论】:

  • 这不只适用于一维数组吗?如果我错了,请纠正我。我已经更新了我的问题,以进一步澄清我最初将数据库中的数据值存储到单个数组中的位置。
  • 哈哈,你说得对,最近JS太多了:) 改为count($results),但他们仍然应该是一个免责声明,你需要使用正确的方法计算实际结果的数量.我们真的不知道它们来自哪里或它们的格式。
【解决方案4】:

根据您的数组结构,您可以使用它

$data[0] = "TIR";
$data[1] = "Tires";
$data[2] = "100";

$data1[0] = "OIL";
$data1[1] = "Oil";
$data1[2] = "10";

$data2[0] = "SPK";
$data2[1] = "Spark Plugs";
$data2[2] = "4";

$resultCount = 3;  // adjust this value for the number of results you have
$products = array();

for ($i = 0; $i < $resultCount; $i++) {
    $products[] = ${'data' . ($i ? $i : '')};
}

print_r($products);

【讨论】:

    【解决方案5】:
    **Method-1**  Raw method to generate the 2 diamentional array
    This is your Array
    
    $products = array( array( 'TIR', 'Tires', 100 ),
    array( 'OIL', 'Oil', 10 ),
    array( 'SPK', 'Spark Plugs', 4 ),
    array( 'SPK', 'Spark Plugs', 4 ));
    
    $cnt=0;
    $cnt=count($products);
    $product=array();
    

    // 正在将数据复制到 $product 数组中

    for($i=0;$i<$cnt;$i++){
    for($j=0;$j<3;$j++){
    $product[$i][$j]= $products[$i][$j];
    }
    }
    
    
    If you are getting data from data base 
    
    for($i=0;$i<mysql_num_rows($result);$i++){
     $products[]=result [$i];
    }
    

    【讨论】:

    • 嗨 shivaP,感谢您的澄清。但我想使用上面数组中存储的数据结构创建二维数组。
    【解决方案6】:

    如果您的数据来自数据库:您可以使用while 循环

    $products        = array();
    /* data from first table*/
    while($dataTitle = mysql_fetch_assoc($sql)){
       $products[]   = $dataTitle;
    } 
    
    /* data from second table*/
    while($dataDesc  = mysql_fetch_assoc($sql)){
       $products[]   = $dataDesc;
    }
    
    /* data from third table*/
    while($dataValue = mysql_fetch_assoc($sql)){
       $products[]   = $dataValue;
    }
    
    echo "<pre>";
    print_r($products);
    

    【讨论】:

    • 嗨,Prasanth,如果我将数据库中的数据存储在我的问题中提到的数组中,该怎么办。我想使用 for Loop 将数据值数组插入到二维数组中?有可能吗
    • @user1109161 :我真的不明白你是如何在不使用二维数组的情况下为 $data[0](TIR、OIL、SPK)存储 3 个不同的值的。
    • 您说:“这是存储 DB 中的值的数组:”,为什么要像显示的方式那样存储值,如果可以的话会更好显示整个代码(从数据库中获取、分配给变量等),以便我们更好地了解您的问题。
    • 因为数据是从不同的表中获取的。因此,最好的方法是先将它们合并到一个数组中。
    • @user1109161 :我更新了答案,如果对您有帮助,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2013-04-30
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多