php新手请教简单代码问题(《Head First PHP &MYSQL》)

2024年12月01日 09:39
有4个网友回答
网友(1):

  1.  $category = $responses[0]['category_name'];这句话中的[0]是什么意思?书中没介绍......

    变量$responses是一个二维数组,上面代码$responses[0]['category_name']意思是获取下标为0也就是第一个数组列中category_name的值

2. foreach中的if语句,
if ($category != $response['category_name']) {
     $category = $response['category_name'];
     echo '

' . $response['category_name'] . '';
   }

这一句是判断变量$category的值是否等于数组$response中下标为category_name值 如果等于就显示这个值。

foreach 是来遍历二维数组$responses的,此外这个程序写得不好,按照这个程序逻辑,foreach就得遍历完二维数组$responses所有元素,当执行一次循环后,$category便一直等于 $response['category_name'],那么往后if语句还是执行的,foreach继续遍历完数组。
所以优化一下加一个break就行了 具体代码 我贴一下:

foreach ($responses as $response) {
   // Only start a new fieldset if the category has changed
 
if ($category != $response['category_name']) {
     $category = $response['category_name'];
     echo '

' . $response['category_name'] . '';
   }

//.......若干代码

break;

}

网友(2):

1.$category = $responses[0]['category_name']; 我个人认为是个二维数组,category_name是键名。
2.不知道第一次循环后if是否还执行,但是可以确定每次循环都会有一个判断的动作存在。因为if中改变的只是数组中的一个元素,而程序是不知道数组中到底会有多少个$response['category_name']元素存在,因此一直都会判断下去。

网友(3):

$responses
应该是返回来的一个结果集 也就是一个二维数组吧 那个零就是 数组索引啦。

网友(4):

问题一 :这是个二维数组 0是他的行号
问题2:foreach 是把responses 的值付给response 所以有变化的