是否有可能在php中使用for循环显示多维数组

时间:2011-04-15 16:13:42

标签: php arrays

我有像

这样的多维数组
Array
(
    [0] => Array
        (
            [ename] => willy 
            [due_date] => 12:04:2011
            [flag_code] => 0
        )

    [1] => Array
        (
            [Father] => Thomas
            [due_date] => 13:04:2011
            [flag_code] => 0
        )

    [2] => Array
        (
            [charges] => $49.00

        )

)

我想用php显示数组的值。但仍然失败。请任何人帮我做这个任务....?

8 个答案:

答案 0 :(得分:3)

由于你坚持只使用for循环来实现这一点,我不得不假设这是一个功课问题。因此,我将向您介绍几个PHP手册页,希望您能够查看它们并尝试为自己学习一些东西:

现在,我将打破你的实际问题几个不同的问题:

是否可以使用for循环显示多维数组?

是。完全可以使用for循环来迭代多维数组。您只需要在for循环内嵌套for循环。即,您创建一个for循环来迭代外部数组,然后在该循​​环内部使用另一个for循环迭代内部数组。

如何使用for循环迭代多维数组?

通常,当您使用for循环时,循环将如下所示:

for($i = 0; $i < $maxValue; $i++) {
  // do something with $1
}

虽然这适用于索引数组(即带有数字键的数组),但只​​要它们具有顺序键(即按顺序使用每个整数的键。例如,具有键0,1和2的数组是顺序的;具有键0,2和3的数组不是因为它跳过1),这对于关联数组(即具有文本作为键的数组 - 例如$array = array("abc" = 123);)不适用,因为这些数组赢了没有你的for循环会产生的数字索引的键。

相反,你需要有点创意。

您可以这样做的一种方法是使用array_keys来获取其他数组使用的键的索引数组。例如,看看这个简单的一维数组:

$dinner = array(
            "drink"     => "water",
            "meat"      => "chicken",
            "vegetable" => "corn"
          );

这个数组有三个元素,每个元素都有一个关联键。我们可以使用array_keys获取其键的索引数组:

$ keys = array_keys($ dinner);

这将返回以下内容:

Array
(
    [0] => drink
    [1] => meat
    [2] => vegetable
)

现在,我们可以迭代键,并使用它们的值来访问原始数组中的关联键:

for($ i = 0; $ i&lt; count($ keys); $ i ++){   echo $ dinner [$ keys [$ i]]。 “
”; }

当我们遍历此循环时,索引$i将被设置为保存$keys数组的每个索引。此键的关联元素将是$dinner数组中键的名称。然后,我们使用此密钥名称按顺序访问$dinner数组元素。

或者,您可以使用resetcurrentnext函数的组合来迭代数组中的值,例如:

for($element = current($dinner); 
    current($dinner) !== false; 
    $element = next($dinner)
   ) {
  echo $element . "<br />";
}

在此循环中,使用$elementreset变量初始化为数组中的第一个元素,它将数组指针设置为第一个元素,然后返回该元素。接下来,我们检查current($dinner)的值以确保有值要处理。 current()返回数组指针当前设置的元素的值,如果没有元素则返回false。最后,在循环结束时,我们使用next将数组指针设置为1。当我们尝试读取数组末尾之外的时候,next会返回false,但我们会忽略它并等待current注意到没有当前元素可以停止循环。< / p>


现在,编写完所有内容后,真的没有任何理由跳过所有这些环节,因为PHP有​​内置的foreach结构,允许你迭代每个数组元素,无论密钥类型如何:

foreach($dinner as $key => $value) {
  echo "The element in key '" . $key . "' is '" . $value ."'. <br />";
}

这就是为什么我假设这是一个家庭作业,因为你可能永远没有理由在生产环境中跳过这些箍。然而,知道存在这样的结构是很好的。例如,如果你可以使用任何循环但是一个foreach,那么使用while循环比尝试打击{{1}要简单得多循环做你想做的事:

for

总之,要使用关联键迭代多维数组,您需要将循环嵌套在彼此内部,如第一个问题的答案所示,使用第二个问题的答案中显示的循环之一进行迭代关联键值。我将把实际的实现作为练习留给读者。

答案 1 :(得分:2)

要打印数组的值,可以使用print_r函数:

print_r($array);

这样可以保存for循环。

答案 2 :(得分:1)

只需使用方便的功能print_r

的print_r($ myarray中);

答案 3 :(得分:1)

如果您不想使用print_r函数,那么对于真正的n维数组解决方案:

function array_out($key, $value, $n) {
    // Optional Indentation
    for($i=0; $i < $n; $i++)
        echo("&nbsp;&nbsp;");
    if(!is_array($value)) {
      echo($key . " => " . $value . "<br/>");
    } else {
        echo($key . " => <br/>");
        foreach($value as $k => $v)
            array_out($k, $v, $n+1);
    }
}

array_out("MyArray", $myArray, 0);

不确定是否可以使用for循环和混合关联数组,但foreach确实可以正常工作。

答案 4 :(得分:1)

如果必须使用for循环,则需要以下内容:

$count = count($array)
for($i = 0; $i <= $count; $i++)
{
    $count2=count($array[$i]);
    for($j = 0; $j <= $count2; $j++)
    {
        print $array[$i][$j] . "<br/>";
    }
 }

答案 5 :(得分:0)

foreach( $array as $row ) {
    $values = array_values($row);
    foreach( $values as $v ) {
       echo "$v<br>";
    }
}

应输出:

willy 
12:04:2011
0
Thomas
13:04:2011
0
$49.00 

答案 6 :(得分:0)

这实际上是可读的:

echo '<pre>';
print_r($myCoolArray);
echo '</pre>';

答案 7 :(得分:0)

您需要使用诸如将array_keys分配给数组,然后使用for循环来完成该操作等等...

但这正是我们拥有foreach的原因 - 编写,阅读和运行会更快。你能解释为什么必须用for来解决?