for循环和if循环是否拒绝在循环外打印变量?

时间:2010-10-08 12:58:33

标签: php

我面临的一个问题是,在我创建jQuery帖子之后,我能够接收所有数据但是作为一个和平,所以当我开始重述它们时我成功直到最后一部分是插入数据库,在for循环内部和if循环我得到的值,但当我想开始将它们插入数据库时​​,我得到空值,下面是for循环和if循环

if ($action == "insert")
{
    $fields = explode("&",$data);

    foreach($fields as $field)
    {
        $field_key_value = explode("=",$field);
        $key = urldecode($field_key_value[0]);
        $value = urldecode($field_key_value[1]);

        $id = $row['id'];

        $date1 = date("d/n/Y");

        foreach ($cart->get_contents() as $item)
        {
            $item_id    = $item['id'];
            $item_name  = $item['name'];
            $item_price = $item['price'];
            $item_qty   = $item['qty'];
            $item_ids       = explode("-",$item_id);

            for($i = 0; $i < count($item_ids); $i++)
            {
                $item_idn = join("",$item_ids);
            }

            if($key == $item_id."id")
            {
                $ids = $value;
                echo $ids."\r\n";
            }
            elseif($key == "Small".$item_idn)
            {
                $small= $value;
                echo $small."\r\n";
            }
            elseif($key == "large".$item_idn)
            {
                $large= $value;
                echo $large."\r\n";
            }
            elseif($key == "medium".$item_idn)
            {
                $medium= $value;
                echo $medium."\r\n";
            }
            elseif($key == "xlarge".$item_idn)
            {
                $xlarge= $value;
                echo $xlarge."\r\n";
            }
            elseif($key == "qty".$item_idn)
            {
                $qty = $value;
                echo $qty."\r\n";
            }
            elseif($key == "Total".$item_idn)
            {
                $subtotal = $value;
                echo $subtotal."\r\n";
            }
            elseif($key == "finaltotal")
            {
                $finaltotal = $value.",";
                $final = explode(",",$finaltotal);

                for($i = 0; $i < count($final); $i++)
                {
                    $totalf = $final[$i];
                    break 3;
                }
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

来自jQuery docs

  

.serialize()方法以标准URL编码表示法

创建文本字符串

所以在PHP方面,你会得到一个类似的字符串:

a=1&b=2&c=3&d=4&e=5

无需爆炸&(或任何其他hocus-pocus),您可以轻松访问提交的变量,例如:

$a = $_POST['a']; //1

当然,当您通过$_GET提交数据时,需要使用$_GET

答案 1 :(得分:0)

好像你有很多问题。如果您的jQuery发布到您的PHP脚本,您可以通过$ _POST数组获取所有键/值。您可以像$finaltotal = $_POST['finaltotal']一样获得$ finaltotal。如果您的jQuery不是POSTing,而是将它们作为GET请求发送,您可以获得与$finaltotal = $_GET['finaltotal']相同的值。

另外,关于你的大if / elseif代码块,我建议你使用switch语句,如果你要保持你的代码原样。

switch($key)
{
    case 'finaltotal':
        //do stuff
        break;
    default:
        //do default
        break;
}

答案 2 :(得分:0)

首先,您可以使用$ _GET / $ _ POST作为提交数据,如fabrik所指出的,或者(如果由于某种原因,您实际上只有 $ data 中的数据)可以使用内置函数parse_str

parse_str($data, $fields);
foreach($fields as $key => $field) {
  foreach ($cart->get_contents() as $item) {
    if($key == ...) {
      ...
    }
  }
}

如果我正确理解你在这里做了什么,你需要将break 3;移出你的for循环:

elseif($key == "finaltotal") {
  $finaltotal = $value.",";
  $final = explode(",",$finaltotal);

  for($i = 0; $i < count($final); $i++){
    $totalf = $final[$i];
  }
  break 3;
}