【发布时间】:2017-10-25 17:16:58
【问题描述】:
如果我手动设置值,我有一个多维数组,但如果我尝试动态设置值,则它不起作用。
这是我手动设置数组值时有效的代码:
<?php
//testing creation and output of a multidimensional array
$evt = array("BATT","MGAP","BSTR");
$st = array("Document","Enrollee","Agent","Other");
$ord = array(1,3,2,4);
$prt = array(
array('evt'=>"BATT",'st'=>"Document",'ord'=>1),
array('evt'=>"BATT",'st'=>"Enrollee",'ord'=>3),
array('evt'=>"BATT",'st'=>"Agent",'ord'=>2),
array('evt'=>"BATT",'st'=>"Other",'ord'=>4),
array('evt'=>"MGAP",'st'=>"Document",'ord'=>1),
array('evt'=>"MGAP",'st'=>"Enrollee",'ord'=>3),
array('evt'=>"MGAP",'st'=>"Agent",'ord'=>2),
array('evt'=>"MGAP",'st'=>"Other",'ord'=>4),
);
$keys = array_keys($prt);
for ($x=0;$x<count($keys);$x++) {
echo "UNSORTED: prt key is " . $keys[$x] . "{<br>";
foreach ($prt[$keys[$x]] as $key=> $value) {
echo $key . " : " . $value . "<br>";
}
echo "}<br>";
}
?>
这是尝试动态设置值时不起作用的代码:
<?php
//testing creation and output of a multidimensional array
$evt = array("BATT","MGAP","BSTR");
$st = array("Document","Enrollee","Agent","Other");
$ord = array(1,3,2,4);
$prt = array();
for ($x=0;$x<count($evt);$x++) {
for ($y=0;$y<count($st);$y++) {
$prt[$x][$y] = array('evt'=>$evt[$x],'st'=>$st[$y],'ord'=>$ord[$y]);
echo "evt[".$x."] is set to " . $evt[$x] . " and st[".$y."] is set to " . $st[$y] . " and ord[".$y."] is set to " . $ord[$y] . "<br>";
}
}
$keys = array_keys($prt);
for ($x=0;$x<count($keys);$x++) {
echo "UNSORTED: prt key is " . $keys[$x] . "{<br>";
foreach ($prt[$keys[$x]] as $key=> $value) {
echo $key . " : " . $value . "<br>";
}
echo "}<br>";
}
?>
基于 for $y 循环中的 echo 语句,我得到了正确的值,但由于某种原因我没有正确存储它,或者使用 $key=>$value 的 foreach 循环不起作用,我不知道是哪个。我已经寻找各种解决方案来尝试动态设置数组,然后再次动态访问它,似乎无法让它按预期工作。希望大家帮忙,谢谢!
【问题讨论】:
标签: php arrays multidimensional-array