получение неправильных значений при получении значений из массива

0

Мне нужно получить значения из массива, для этого я попытался передать код, указанный здесь, в qaru.site/questions/1579064/...

массив, который у меня есть

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

ia mgetting правильные значения id и name, однако я не получаю правильный результат для $category['0'] и $category['1']

в результате я получил

405
GOLD CHID
35
9

404
KASHMIRI
35
9

403
ENVELOPE BOX
35
9

Может ли кто-нибудь сказать мне, где я ошибся???

Теги:
arrays
multidimensional-array
for-loop
foreach

2 ответа

2
Лучший ответ

Ваша проблема связана с несколькими проблемами.

  • Во-первых, вы не завершаете свою foreach петлю 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>";

Какая петля над каждой категорией, печатая 1-й символ в каждом (35), затем печатает второй символ в последней категории (9).

Измените его на следующее:

foreach($product['categories'] as $category) {
    echo $category;
    echo "<br>";
}
  • 0
    спасибо за ваши ответы, в категории $ echo; я получаю значения, но я хочу хранить их отдельно в базе данных, есть ли способ, где я могу получить значения 39, 59 в отдельных переменных ???
  • 2
    Да, не используйте цикл foreach и называйте его $product['categories'][0] и $product['categories'][1] .
Показать ещё 2 комментария
0

изменить это

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 даст реальную стоимость

  • 0
    я получаю повторяющиеся значения 39 и 59 для одного продукта, в то время как я хочу хранить их отдельно в переменной только один раз для каждого продукта

Ещё вопросы

Сообщество Overcoder
Наверх
Меню