Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组中获取值时获取不正确的值_Php_Arrays_For Loop_Multidimensional Array_Foreach - Fatal编程技术网

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

Php 从数组中获取值时获取不正确的值,php,arrays,for-loop,multidimensional-array,foreach,Php,Arrays,For Loop,Multidimensional Array,Foreach,我需要从一个数组中获取值,为此,我尝试引用此处的代码 我拥有的数组是 Array ( [success] => 1 [products] => Array ( [0] => Array ( [id] => 405 [name] => GOLD CHID [cat

我需要从一个数组中获取值,为此,我尝试引用此处的代码

我拥有的数组是

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>";
                        }
            } 
    }

谁能告诉我哪里出了问题吗?

你的问题源于几个问题

  • 首先,不要将第二个
    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>";
}
foreach($product['categories']作为$category)
{
echo$category['0'];
回声“
”; echo$类别['1']; 回声“
”; }
对此

foreach($product['categories'] as $category)
{
 echo $category;
 echo "<br>";
 echo $category;
 echo "<br>";
}
foreach($product['categories']作为$category)
{
echo$类别;
回声“
”; echo$类别; 回声“
”; }

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

感谢您在echo$category中的ans;我得到了这些值,但我希望将它们分别存储在数据库中,是否有一种方法可以在单独的变量中获取值39、59???是的,不要使用
foreach
循环并将它们称为
$product['categories'][0]
$product['categories'][1]
。如果[0]和[1]中有不同数量的类别,您能告诉我吗。在每个循环中,我将$category['0']指定为主类别,将$category['1']指定为子类别,但现在当我在数组中进一步深入时,我在类别中有3个位置,分别位于[0]、[1]和[2]位置,[1]是类别的保留值,[2]是子类别的保留值。我现在怎样才能得到category的值呢???我得到的是单个产品的重复值39和59,而我希望每个产品只将它们单独存储在一个变量中一次
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>";
}