Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中传递查询字符串上的数组值_Php_Arrays_Query String - Fatal编程技术网

如何在php中传递查询字符串上的数组值

如何在php中传递查询字符串上的数组值,php,arrays,query-string,Php,Arrays,Query String,我需要你的帮助 如何在查询字符串中传递数组值 <?php foreach ( $Cart->getItems() as $order_code=>$quantity ) : $pname[]= $Cart->getItemName($order_code); $item[]= $Cart->getItemPrice($order_code);

我需要你的帮助

如何在查询字符串中传递数组值

<?php 
                foreach ( $Cart->getItems() as $order_code=>$quantity ) :
                $pname[]= $Cart->getItemName($order_code);
                $item[]= $Cart->getItemPrice($order_code);
                $qty[]=$quantity;
                endforeach;
                ?>
                <form action='expresscheckout.php?amt=<?php echo $total_price; ?>&item_name=<?php echo $pname; ?>&unit=<?php echo $item; ?>&quan=<?php echo $qty; ?>' METHOD='POST'>
<input type='image' name='submit' src='https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif' border='0' align='top' alt='Check out with PayPal'/>
</form>


要传递数组值,应使用[]。 例如


基本上,您只需要使用PHP函数将数组转换为逗号分隔的列表。i、 e.对于$item数组:

$item = array('item1', 'item2');
echo implode(',', $item);
将输出:

item1,item2
因此,类似这样的内容应该打印一个类似于所需内容的查询字符串:

echo 'pname='.implode(',', $pname).
     '&item='.implode(',', $item).
     '&qty='.implode(',', $qty);

您需要序列化数组

在php中序列化

生成的可存储表示形式 价值

这对于存储或传递非常有用 PHP值在不丢失其 类型和结构

将序列化字符串转换为 PHP值,再次使用unserialize()

参考:-

范例

$my_array= (array('val1', 'val2','val3');

server.php?query_string=serialize($my_array)
在服务器页面中

$query_string= unserialize($_REQUEST['query_string']);
现在它将是数组格式


我希望这对您有所帮助

-有一个简单的方法来检查我的答案。不用担心,我知道序列化变量是什么。OP希望查询字符串采用我提供的格式。顺便说一句,您提交的不是URL编码的,但我不建议在任何情况下通过URL传递序列化的PHP。请问,为什么不建议序列化?仅针对不跨平台的奇怪可怕的URL(即RESTful的反面),并且从PHP动态类型的安全角度来看,这将使输入验证变得非常复杂。持久化复杂的数据结构是会话的目的,URL是指资源ID,而不是包含PHP、SQL或其他编程代码。使用一个urlencoded序列化PHP的querystring变量并没有什么严格的违法之处,这不是一个好的做法。我相信AjayR知道这一点,但对于阅读此答案的人来说:永远不要像下面所示那样直接将未经调整的值设置到SQL语句中。这只是一种简化,以避免在答案中放入一堆与问题无关的代码。是的,Micheal,我只是为了简单起见展示了代码,我们需要在插入数据库之前处理SQL注入和其他事情。
$my_array= (array('val1', 'val2','val3');

server.php?query_string=serialize($my_array)
$query_string= unserialize($_REQUEST['query_string']);