我不明白为什么我不能从我的数组中回显出特定值..
我抓住$ _POST输出并将其保存到数组,过滤数组以删除空键,显示数组,一切正常,然后我尝试指定一个特定的值,我什么都没得到。
echo "Post OrderArray<pre>";
print_r($_POST[order]);
echo "</pre>";
$order_list = $_POST[order];
$order_list = array_filter(array_map('array_filter', $order_list));
echo "order_list<pre>";
print_r($order_list);
echo "</pre>";
// try to output specific values
echo $order_list[0]['code'] . " _ " . $order_list[0]['qty'] . "<br />";
Post Order Array
Array
(
[0] => Array
(
['qty'] => 3
['code'] => 29468
)
[1] => Array
(
['qty'] =>
)
[2] => Array
(
['qty'] =>
)
[3] => Array
(
['qty'] =>
)
[4] => Array
(
['qty'] =>
)
)
Filtered Order_list Array
Array
(
[0] => Array
(
['qty'] => 3
['code'] => 29468
)
)
_
我想我应该得到&#34; 29468 _ 3&#34;但是我没有从数组中获得任何值。
答案 0 :(得分:1)
我在您访问$_POST
并获得预期输出时复制了您的示例并添加了引号。
如果您不使用引号,您将收到类似以下内容的通知,具体取决于您的PHP版本:
Notice: Use of undefined constant order - assumed 'order' in /private/tmp/post.php on line 13
如果您使用的是PHP 7.1.8或更低版本,则脚本仍应执行而不会出现问题。如果您使用的是PHP 7.2,则此行为已被弃用且无法运行。您可以找到有关此in this related answer的更多信息。
工作脚本(在PHP 7.1.8中):
// Manually set this for testing...
$_POST = [
'order' => [
['qty' => 3, 'code' => 29468],
['qty' => null],
['qty' => null],
['qty' => null],
['qty' => null],
]
];
echo "Post OrderArray<pre>";
print_r($_POST['order']); // Added quotes
echo "</pre>";
$order_list = $_POST['order']; // Added quotes
$order_list = array_filter(array_map('array_filter', $order_list));
echo "order_list<pre>";
print_r($order_list);
echo "</pre>";
// try to output specific values
echo $order_list[0]['code'] . " _ " . $order_list[0]['qty'] . "<br />";
输出:
php post.php
Post OrderArray<pre>Array
(
[0] => Array
(
[qty] => 3
[code] => 29468
)
[1] => Array
(
[qty] =>
)
[2] => Array
(
[qty] =>
)
[3] => Array
(
[qty] =>
)
[4] => Array
(
[qty] =>
)
)
</pre>order_list<pre>Array
(
[0] => Array
(
[qty] => 3
[code] => 29468
)
)
</pre>29468 _ 3<br />
答案 1 :(得分:0)
当我创建我使用的数组时,我发现了错误:
$checkboxdata = "<input type=\"checkbox\" name=\"order[$x]['code']\" value=\"$sku\" />$sku";
$qty_checkbox = "<input type=\"text\" name=\"order[$x]['qty']\" class=\"spinner-1\" value=\"\" />";
所以我的数组看起来像:
Array
(
[0] => Array
(
['qty'] => 1
['code'] => 29468
注意引号。
当我将代码编辑为:
$checkboxdata = "<input type=\"checkbox\" name=\"order[$x][code]\" value=\"$sku\" />$sku";
$qty_checkbox = "<input type=\"text\" name=\"order[$x][qty]\" class=\"spinner-1\" value=\"\" />";
通过删除引号,我现在可以访问并获取我的个人值。
我知道这是愚蠢的,我是对的。
感谢所有人的帮助。