【问题标题】:PHP What is the proper way to access the values of an arrayPHP访问数组值的正确方法是什么
【发布时间】:2014-08-16 08:29:01
【问题描述】:

这似乎是一个新手问题,但我在这里遇到了困难。

我有一个来自通过 jquery 发布的表单的 post 值数组,$_POST["extra"] 数组是通过 .serialize() 格式化的。

string(1) "0"
["tax"]=>string(1) "0"
["taxRate"]=>string(1) "0"
["itemCount"]=>string(1) "3"
["item_name_1"]=>string(17) "Detox Diet 1234®"
["item_quantity_1"]=>string(1) "2"
["item_price_1"]=>string(5) "32.95"
["item_options_1"]=>string(56) "thumb: /cb2014-II/img/products/DetoxDiet1234.jpg, pid: 3"
["item_name_2"]=>string(12) "Fiber 1234®"
["item_quantity_2"]=>string(1) "1"
["item_price_2"]=>string(2) "55"
["item_options_2"]=>string(52) "thumb: /cb2014-II/img/products/Fiber1234.jpg, pid: 4"
["item_name_3"]=>string(10) "eAc 1234®"
["item_quantity_3"]=>string(1) "2"
["item_price_3"]=>string(5) "42.95"
["item_options_3"]=>string(40) "pid: 27, thumb: img/products/eAC1234.jpg"
["extra"]=>string(465) "x_first_name=value&x_last_name=value&phone=xxx-xxx-xxxx&fax=&email=first.last%40domain.com&company=company&ccnumber=xxxxxxxxxxx&expMo=1&expYr=2016&cvv=&address1=address one&address2=&city=city&state=UT&zip=xxxxx&country=USA&addressee_firstName=&addressee_lastName=&shipping_address1=&shipping_address2=&shipping_city=&shipping_state=&shipping_zip=&shipping_country=&checkoutConfirm=1&x_amount=xx.xx&num_units=3&x_test_request=yes"
["testItem"]=>string(9) "test Item"
["check_out"]=>string(3) "Yes"
}

访问“extra”内的发布值是正确的语法$newVar = $_POST['extra']['num_units']

因为似乎打印到我屏幕上的值是第一个“额外”字段名称的第一个字符,所以我没有使用循环来获取值,只是在清理后尝试在本地设置。

我的解决方案: parse_str($extra,$extraFields); 不,我可以访问 $extraFields['x_first_name'] 之类的值

【问题讨论】:

  • 没有。 $_POST['extra'] 只是一个长字符串。尚未提取单个键 = 值对。您需要 parse_str() 那个字符串,它会将键/值对提取到它们自己的数组中。
  • 感谢@MarcB 在这里进行了一些研究:[link]w3schools.com/php/func_string_parse_str.asp[/link] 我能够让它工作。我将我的解决方案发布为对原始问题的编辑
  • w3fools 不是“研究”。这只是谷歌的第一个结果。如果您必须查找有关 php 函数的信息,请转到 http://php.net/name_of_function
  • 不管怎样,它都能给我正确的方法来使用你建议的功能。谢谢
  • +1 获取信息

标签: php jquery arrays post


【解决方案1】:

看到这个http://www.php.net//manual/en/function.parse-str.php

$extras = array();
parse_str($_POST['extra'], $extras);
//now $extras holds all the info in a readable format

【讨论】:

  • 谢谢@nikola 举个例子
【解决方案2】:

看起来您的“额外”字段是一个 url 编码的查询字符串。您需要先解码该字符串,然后才能将内部属性作为数据(而不是字符串)访问:

parse_str(urldecode($_POST['extra']), $extras);

现在您应该可以访问$extra['x_last_name']

【讨论】:

  • 这似乎对我不起作用,但包括数组的可选参数以将其存储在工作中。即:parse_str($_POST['extra'],$extras) 无论如何谢谢你
  • 是的,我的错,应该仔细阅读文档。更新的答案。
猜你喜欢
  • 2014-03-06
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多