【问题标题】:Php Multidimensional Array With Mixed For And Foreach Loops具有混合 For 和 Foreach 循环的 PHP 多维数组
【发布时间】:2018-08-10 03:18:37
【问题描述】:

我是 PHP 的初学者,目前正致力于将一个小型网站从 Classic ASP (VB) 重新编码为 PHP,我想知道是否有一个相当直接的“翻译”来将这个概念从一个到其他语言?

我知道嵌套的 foreach 循环可以完成这项工作,但是,我很好奇带有 foreach 内循环的 for 外循环是否可以工作?

这是我尝试做的。 由于某种原因,变量 $strMonth_Alpha 没有返回。 感谢您提供任何线索。

PHP 代码:

$strMonthList='01,January;02,February;03,March;04,April;05,May;06,June;07,July;08,August;09,September;10,October;11,November;12,December';
$arrMonthList=explode(';',$strMonthList); //create the outer array
    //print_r(array_values($arrMonthList));
    for ($ii=0; $ii<count($arrMonthList); $ii++) {
        $M=explode(',',$arrMonthList[$ii]); //create the inner array
        //print_r(array_values($M));
        $myArrayCount=0;
            foreach($M as $a => $item) {
                    if ($myArrayCount==0) {
                    $strMonth_Num=$M[$myArrayCount];
                    //echo '<BR>$strMonth_Num...'.$strMonth_Num.'<BR>';
                    }

                    if ($myArrayCount==1) {
                    $strMonth_Alpha=$M[$myArrayCount];
                    }else{
                    $strMonth_Alpha='';
            $myArrayCount=($myArrayCount+1);
                 }  
            }
    }//to next month

【问题讨论】:

  • 很多代码什么都不做。无论如何,你期望什么结果?

标签: php arrays for-loop multidimensional-array nested


【解决方案1】:

print($strMonth_Alpha) 在您的代码中或打印任何其他变量以进行调试并查看发生了什么变化。我刚刚尝试在你的 if/else 语句之后打印这个,我得到:

print($strMonth_Alpha . '&lt;br/&gt;');

January
February
March
April
May
June
July
August
September
October
November
December

知道每个循环都覆盖$strMonth_Alpha

如果01,January 等数据始终采用这种格式(即假设您的代码可以安全地做出),那么您可以简化代码以删除第二个for 循环。

$arrMonthList=explode(';',$strMonthList); //create the outer array
//print_r(array_values($arrMonthList));
for ($ii=0; $ii<count($arrMonthList); $ii++) {
    $M=explode(',',$arrMonthList[$ii]); //create the inner array
    echo($M[0] . "<br/>"); // num
    echo($M[1] . "<br/>"); // month name

}//to next month

【讨论】:

  • 好方法!那很干净。关于在内循环中计算数组元素,如果计数变量开始于零?我已经测试过了,结果是一样的,但是我不太确定它在 PHP 中是如何操作的。
  • 我不确定你的意思,但你已经在这里使用了计数:count($arrMonthList) 计算列表中的条目数(月),对吧?还是你的意思是别的?
【解决方案2】:

试过你的代码,除了格式没有改变,只是回显了变量,我得到了“十二月”的值。这是你想要的吗 ?

只需将其添加到最后一个括号之后的代码末尾即可。

echo $strMonth_Alpha;

【讨论】:

  • 非常感谢。我意识到,几个小时后,我错过了显而易见的事情,并将 echo $strMonth_Alpha 放在 if/then 语句的“假”部分中。难怪它不会打印。
猜你喜欢
  • 2011-08-30
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2015-05-08
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多