从Multi-dim Array获取值

时间:2018-04-03 14:37:11

标签: php multidimensional-array

我不明白为什么我不能从我的数组中回显出特定值..

我抓住$ _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;但是我没有从数组中获得任何值。

2 个答案:

答案 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=\"\" />";

通过删除引号,我现在可以访问并获取我的个人值。

我知道这是愚蠢的,我是对的。

感谢所有人的帮助。