2010-05-06 185 views
2

我有一个多维数组,我该如何使用它?我想在for循环中使用每个单独的数组。PHP通过多维数组循环遍历

我想要的是能够将每个部分放入我的数据库中,例如 条目中的db no。 0 - > 1和4 条目在db no。 1 - > 5和6 条目在db no。 2 - > 1和4以及5和6

我有这样的代码:

<?php 
    print_r($calculatie_id); 
    for ($i=0; $i<=3; $i++) 
{ 
?> 
<tr> 
    <td> 

    <?php 
    foreach ($calculatie_id[$i] as $value) 
    { 
     echo $value; 
    } 
?> 

print_r($calculatie_id); gives 
Array ([0] => Array ([0] => 4 [1] => 6) [1] => Array ([0] => 1 [1] => 5) [2] => Array ([0] => 5 [1] => 6) [3] =>) 

但是用foreach当我只得到46

一些额外的信息:

这个阵列是由for循环中的多重选择创建。欢迎任何其他建议。

for ($i=0; $i<=$aantal_regels_corr; $i++) 
{ 
?> 
<tr> 
    <td> 

     <?php 
     // maak select name 
     $calculatie_id = 'calculatie_id'.$i; 

     // rest van formulier 
     if($error_vergeten[$i] == "ja"){ $error_omschr = $error_omschr_vergeten[$i]; include('includes/input_error.php'); } ?>&nbsp;<textarea rows="7" cols="80" name="omschrijving[]" /><?php echo $omschrijving[$i]; ?></textarea> 
    </td> 
    <td colspan="2"> 
     <select multiple="multiple" width="50" size="7" name="<?php echo $calculatie_id ?>[]" style="width: 150px"> 
     <?php 
      $sql_calc = "select id, naam, actief from sp_calculatie WHERE (offerte_id = '".$row['off_offerte']."' OR offerte_id = '".$offerte_id."') AND actief = 'ja' ORDER BY id ASC"; 
      $res_calc = mysql_query($sql_calc,$con); 
      while ($row_calc = mysql_fetch_assoc($res_calc)){ 
     ?> 
      <option value="<?php echo $row_calc["id"] ?>"><?php if (empty($row_calc["naam"])) { echo $row_calc["id"]; } else { echo $row_calc["naam"]; } ?></option> 
     <?php } ?></select> 
    </td> 
</tr> 
<?php } ?> 
+0

看看更新! – 2010-05-06 20:54:59

回答

0

您需要嵌套的循环foreach(让你有一个循环内的循环)

6
foreach($calculatie_id as $inner_arr) 
    foreach($inner_arr as $value) 
     echo $value; 

编辑:你应该尝试去学习和了解是怎么回事。然后,你可以用我写的代码做任何你想做的事情。你说:给14561456我想用$calculatie_id0=14 $calculatie_id1=56 $calculatie_id2=1456然后,你将不得不做这样的事情:

foreach($calculatie_id as $index => $inner_arr){ 
    echo "$calculatie_id$index = " 
    foreach($inner_arr as $value) 
     echo $value; 
    echo "<br/>"; 
} 

或者你也可以创建你想要的变量(没有任何意义对我来说):

foreach($calculatie_id as $index => $inner_arr){ 
    ${"calculatie_id$index"} = ''; 
    foreach($inner_arr as $value) 
     ${"calculatie_id$index"} .= $value; 
    echo ${"calculatie_id$index"}."<br/>"; 
} 
+0

Array([0] => Array([0] => 1 [1] => 4)[1] => Array([0] => 5 [1] => 6) [0] => 1 [1] => 4 [2] => 5 [3] => 6)[3] =>) 给出 我想使用 $ calculatie_id0 = 14 $ calculatie_id1 = 56 $ calculatie_id2 = 1456 等 – Muiter 2010-05-06 19:45:51

0

你可以尝试:

foreach ($calculatie_id as $key => $value) { 
    echo "$calculatie_id:".$key; 
    for ($i=0;$i<=count($value);$i++) { 
    echo $value[$i]; 
    } 
} 
+0

THX但这是结果: 阵列:014Array:156Array:21456Array:3 – Muiter 2010-05-06 19:55:59

3

基本上你所拥有的是一个这样的数组:

array(
array(
    data 
) 
) 

所有你需要的是:

foreach($yourArray as $innerArray) 
foreach($innerArray as $value) 
    echo $value; 

将输出你想要的是什么。我不确定你为什么要做一个for()循环,然后是一个foreach。

+0

我已经加入到开封后的更多信息。 – Muiter 2010-05-06 20:02:00

0

我不明白为什么你原来的代码片段不工作。难道$calculatie_id[3]不是数组吗?

我尝试这样做:

<?php 

$calculatie_id = array (array(4,6), array(1,5), array(5,6), ''); 

for ($i=0; $i<=3; $i++) 
{ 
    if(!is_array($calculatie_id[$i])) 
    continue; 
    echo "$i: "; 
    foreach ($calculatie_id[$i] as $value) 
    { 
    echo $value; 
    } 
    echo '<br/>'; 
} 

这版画:

0:46
1:15
2:56

+0

如何防止tat使用不存在的数组? – Muiter 2010-05-07 17:19:50

+0

@Muiter:和我说的一样,你可以使用if(!is_array($ calculatie_id [$ i]))继续;'继续循环的下一次迭代 – Kip 2010-05-07 21:25:27

0

非常感谢帮助我到目前为止,但我尝试实现的所有示例都不起作用。 我一直在尝试这个脚本超过2个星期了。看来我会走错路。

我已将我的代码放在www.pws.nl/downloads/sp_offerte_add.rar上。我现在正在编写的代码一定更容易。