佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 690|回复: 11

PHP的一些问题

[复制链接]
发表于 7-7-2006 11:47 PM | 显示全部楼层 |阅读模式

  1. $items = explode(',',$cart);
  2. $contents = array();
  3. foreach ($items as $item) {
  4. $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
复制代码


items 里面的东西是这样的 1,1,1,2,2,2,2


我不明白的是。第4行是什么意思呢????


谢谢。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层

  1. $cart = $_SESSION['cart'];
  2.         if ($cart) {
  3.                 $items = explode(',',$cart);
  4.                 $contents = array();
  5.                 foreach ($items as $item) {
  6.                         $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
  7.                 }
  8.                 foreach ($contents as $id=>$qty) {
  9.                         $sql = 'SELECT * FROM books WHERE id = '.$id;
  10.                         $result = $db->query($sql);
  11.                         $row = $result->fetch();
  12.                         extract($row);
  13. 。。。。。
复制代码


说的清楚一点就是
它是如何知道那是 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 编辑 ]
回复

使用道具 举报

Follow Us
发表于 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是怎样来得哦
他是如何分得??

不好意思有点笨。
回复

使用道具 举报


ADVERTISEMENT

发表于 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里 ...


明白了,谢谢你们
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-11-2024 03:51 AM , Processed in 0.092908 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表