我有像
这样的多维数组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显示数组的值。但仍然失败。请任何人帮我做这个任务....?
答案 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
数组元素。
或者,您可以使用reset
,current
和next
函数的组合来迭代数组中的值,例如:
for($element = current($dinner);
current($dinner) !== false;
$element = next($dinner)
) {
echo $element . "<br />";
}
在此循环中,使用$element
将reset
变量初始化为数组中的第一个元素,它将数组指针设置为第一个元素,然后返回该元素。接下来,我们检查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(" ");
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
来解决?