【问题标题】:getting incorrect values while fetching values from an array从数组中获取值时获取不正确的值
【发布时间】:2015-04-23 00:37:00
【问题描述】:

我需要从数组中获取值,为此我尝试参考stackoverflow此处给出的代码

我拥有的数组是

Array
(
    [success] => 1
    [products] => Array
        (
            [0] => Array
                (
                    [id] => 405
                    [name] => GOLD CHID
                    [categories] => Array
                        (
                            [0] => 39
                            [1] => 59
                        )
                )

            [1] => Array
                (
                    [id] => 404
                    [name] => KASHMIRI
                    [categories] => Array
                        (
                            [0] => 39
                            [1] => 59
                        )
                )

            [2] => Array
                (
                    [id] => 403
                    [name] => ENVELOPE BOX
                    [categories] => Array
                        (
                            [0] => 0
                            [1] => 39
                            [2] => 59
                        )
                )
        )
)

我用来获取数组的代码是

if (!empty($array)) 
    {
        foreach ($array['products'] as $product) 
            {
                echo $product['id'];
                echo "<br>";
                echo $product['name'];
                echo "<br>";

                    if(isset($product['categories']))
                        {
                            foreach($product['categories'] as $category)
                            echo $category['0'];
                            echo "<br>";
                            echo $category['1'];
                            echo "<br>";
                        }
            } 
    }

我正在获取 id 和 name 的正确值,但是我没有得到 $category['0']$category['1'] 的正确结果

我得到的结果是

405
GOLD CHID
35
9

404
KASHMIRI
35
9

403
ENVELOPE BOX
35
9

谁能告诉我哪里出错了???

【问题讨论】:

    标签: php arrays for-loop multidimensional-array foreach


    【解决方案1】:

    您的问题源于几个问题。

    • 首先,不要将第二个 foreach 循环括在大括号中
    • 其次,当您的代码没有预料到时,您正在迭代类别。

    您的代码:

    foreach($product['categories'] as $category)
    echo $category['0'];
    echo "<br>";
    echo $category['1'];
    echo "<br>";
    

    有效:

    foreach($product['categories'] as $category) {
        echo $category['0'];
    }
    echo "<br>";
    echo $category['1'];
    echo "<br>";
    

    循环遍历每个类别,打印每个类别的第一个字符 (35),然后打印最后一个类别的第二个字符 (9)。

    将其更改为以下内容:

    foreach($product['categories'] as $category) {
        echo $category;
        echo "<br>";
    }
    

    【讨论】:

    • 感谢您的回答,在 echo $category;我得到了值,但我希望将它们单独存储在数据库中,有没有办法,我可以在单独的变量中获取值 39、59???
    • 是的,不要使用foreach 循环并将它们称为$product['categories'][0]$product['categories'][1]
    • 如果 [0] 和 [1] 中有不同数量的类别,你能告诉我怎么办。在每个循环中,我将 $category['0'] 分配为主要类别,将 $category['1'] 作为子类别,但是现在当我在数组中进一步向下时,我在 [0] 的类别中有 3 个位置, [1] 和 [2] 位置,[1] 是类别的持有值,[2] 是子类别的持有值。我现在如何获取类别的值???
    【解决方案2】:

    改变这个

    foreach($product['categories'] as $category)
    {
    echo $category['0'];
    echo "<br>";
    echo $category['1'];
    echo "<br>";
    }
    

    到这里

    foreach($product['categories'] as $category)
    {
     echo $category;
     echo "<br>";
     echo $category;
     echo "<br>";
    }
    

    因为在您的代码中$category[0] 将输出35 中的第0 个元素。 $category 将给出实际值

    【讨论】:

    • 我得到一个单一产品的重复值 39 和 59,而我希望每个产品只将它们单独存储在一个变量中
    猜你喜欢
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多