我需要从数组中获取值,为此我尝试引用堆栈溢出中给出的代码
我拥有的数组是
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将给出实际值