查看: 689|回复: 11
|
PHP的一些问题
[复制链接]
|
|
- $items = explode(',',$cart);
- $contents = array();
- foreach ($items as $item) {
- $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
复制代码
items 里面的东西是这样的 1,1,1,2,2,2,2
我不明白的是。第4行是什么意思呢????
谢谢。 |
|
|
|
|
|
|
|
发表于 8-7-2006 12:12 AM
|
显示全部楼层
原帖由 红发 于 7-7-2006 11:47 PM 发表
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents = (isset($contents)) ? $contents + 1 : 1;
items 里面的东西是这样的 1,1,1,2,2,2,2
我不明白的是。 ...
$contents 是array 啊。。。 怎么解释呢。。。就是如果里面有东西的话就变1+1=2 , 如果是空的就变1。。。
应该没解释错吧 |
|
|
|
|
|
|
|
发表于 8-7-2006 12:42 AM
|
显示全部楼层
原帖由 红发 于 7-7-2006 11:47 PM 发表
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
意思是这样:
if (isset($contents[$item])) {
$contents[$item] = $contents[$item] + 1;
} else {
$contents[$item] = 1
} |
|
|
|
|
|
|
|
楼主 |
发表于 8-7-2006 09:42 AM
|
显示全部楼层
还是有一点不明白。。。。。。
因为$items里面的东西是这样的
1,1,1,2,2,2,2,5,5
total出来是这样的哦
1 = 3
2 = 4
5 = 2
当然里面有一段code是这样的
foreach(item as $id=>$cart)
注意里面有 item 和 items 哦 |
|
|
|
|
|
|
|
发表于 8-7-2006 11:59 AM
|
显示全部楼层
原帖由 红发 于 8-7-2006 09:42 AM 发表
还是有一点不明白。。。。。。
因为$items里面的东西是这样的
1,1,1,2,2,2,2,5,5
total出来是这样的哦
1 = 3
2 = 4
5 = 2
当然里面有一段code是这样的
foreach(item as $id=>$cart)
注意里面 ...
那么... 究竟... 你还有一点不明白的是什么地方呢?
你只是放了四行 code 呀... |
|
|
|
|
|
|
|
楼主 |
发表于 8-7-2006 03:49 PM
|
显示全部楼层
- $cart = $_SESSION['cart'];
- if ($cart) {
- $items = explode(',',$cart);
- $contents = array();
- foreach ($items as $item) {
- $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
- }
- foreach ($contents as $id=>$qty) {
- $sql = 'SELECT * FROM books WHERE id = '.$id;
- $result = $db->query($sql);
- $row = $result->fetch();
- extract($row);
- 。。。。。
复制代码
说的清楚一点就是
它是如何知道那是 1,2或5 呢??
里面有这样多的1 2 5它是如何分变得??
然后她是如何total起来的?
1 有 3
2 有 4
5 有 2
是不是这样的呢?
$contents as $id=>$qty
但是它是如何知道2有4个?
5有2个的???
谢谢
[ 本帖最后由 红发 于 8-7-2006 03:54 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 8-7-2006 07:02 PM
|
显示全部楼层
原帖由 红发 于 8-7-2006 03:49 PM 发表
$cart = $_SESSION;
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents = (isset($contents)) ? $contents + 1 : 1;
}
foreach ($ ...
关键在这里:
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
当程序在 loop 整个 $items 时, 只要它找到之前的 ID 的, 它就 +1, 否则就设为 1. |
|
|
|
|
|
|
|
楼主 |
发表于 8-7-2006 07:44 PM
|
显示全部楼层
明白了但不知道对不对
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
上面是load出来我的东西
1,1,1,1,2,2,2,2,4,4
之后就变成
1,4,2,4,4,2
因为?
$contents = array();
然后下面的就是找出我的data
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM books WHERE id = '.$id;
不知道是不是这样哦。
然后,id 和那个qty是怎样来得哦
他是如何分得??
不好意思有点笨。 |
|
|
|
|
|
|
|
发表于 8-7-2006 08:57 PM
|
显示全部楼层
原帖由 红发 于 8-7-2006 07:44 PM 发表
明白了但不知道对不对
foreach ($items as $item) {
$contents = (isset($contents)) ? $contents + 1 : 1;
}
上面是load出来我的东西
1,1,1,1,2,2,2,2,4,4
之后就变成
1,4,2,4,4,2
因为 ...
例如有个array是这样的
$array[0] = "a";
$array[1] = "b";
$array[2] = "c";
$array[3] = "d";
foreach的用法就是
foreach($array as $num=>$char){
echo $number."=>".$char."\n";
}
result:
0=>a
1=>b
2=>c
3=>d
把array的key和value拆开. |
|
|
|
|
|
|
|
楼主 |
发表于 8-7-2006 11:07 PM
|
显示全部楼层
原帖由 苦瓜汤 于 8-7-2006 08:57 PM 发表
例如有个array是这样的
$array = "a";
$array = "b";
$array = "c";
$array = "d";
foreach的用法就是
foreach($array as $num=>$char){
echo $n ...
这样的话,我的是不是这样跑的呢?
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
是不是因为$content[$item]的关系
所以他才会这样的
$array[1] = "3";
$array[2] = "4";
$array[5] = "2";
result:
1=>3
2=>4
5=>2
呢?
然后那个$id的就是$array里的id?
[ 本帖最后由 红发 于 8-7-2006 11:10 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-7-2006 12:20 AM
|
显示全部楼层
原帖由 红发 于 8-7-2006 11:07 PM 发表
这样的话,我的是不是这样跑的呢?
foreach ($items as $item) {
$contents = (isset($contents)) ? $contents + 1 : 1;
是不是因为$content的关系
所以他才会这样的
$array = "3";
...
这个是array的key和value的表达式
key=>value
所以 foreach($items as $key=>$value) 就是把key和value分开然后再assign到$key和$value这两个variables;
foreach($items as $item) 就是把$items里的每一个value assign到$item这个variable。
所以,如果 $items = array(1,1,1,2,2,3,3)的话
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$contents 就会是 [1=>3,2=>2,3=>2] |
|
|
|
|
|
|
|
楼主 |
发表于 9-7-2006 11:58 AM
|
显示全部楼层
原帖由 苦瓜汤 于 9-7-2006 12:20 AM 发表
这个是array的key和value的表达式
key=>value
所以 foreach($items as $key=>$value) 就是把key和value分开然后再assign到$key和$value这两个variables;
foreach($items as $item) 就是把$items里 ...
明白了,谢谢你们 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|