从数组中获取值时获取不正确的值


getting incorrect values while fetching values from an array

我需要从数组中获取值,为此我尝试引用堆栈溢出中给出的代码

我拥有的数组是

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和名称的正确值,但是我没有得到$category['0']$category['1']的正确结果

我得到的结果是

405
GOLD CHID
35
9
404
KASHMIRI
35
9
403
ENVELOPE BOX
35
9

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

您的问题源于几个问题。

  • 首先,您不要将第二个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>";
}

更改此设置

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]将输出第 0 个元素 35 . 并且$category将给出实际值