многомерный массив цикла foreach, но только цикл элементов массива с определенным ключом

Я создаю следующий массив, который содержит все продукты и все их категории:

$result = $wpdb->get_results("SELECT product_nr, category FROM erp_product_categories",ARRAY_A);
$product_categories = array();
foreach($result as $row){
$product_categories[$row["product_nr"]][] = $row["category"];
}

(product_nr — целое число, а category — строка)

Затем я хочу проверить, совпадает ли одна из категорий продукта с другой переменной, и вернуть true, если это так:

foreach($product_categories[$ean] as $product_categorie) {
$manages_post = in_array( $product_categorie, $this->term_link_conditions );

if($manages_post == true){
break;
}
}
return $manages_post;

Но я получаю ошибку

В foreach указан неверный аргумент ()

Разве нельзя зацикливаться только на элементах массива с определенным ключом?

Редактировать:
Массив выглядит так

Array
(
[10001] => Array       //product_nr
(
[0] => 1           //category
[1] => 4           //category
)

[10002] => Array
(
[0] => 1
[1] => 20
)
//...
)

0

Решение

Вы должны проверить, что то, что вы передаете foreach, является массивом, используя is_array функция

Если вы не уверены, что это будет массив, вы всегда можете проверить, используя следующий пример PHP-кода:

if (is_array($product_categories[$ean])) {

foreach ($product_categories[$ean] as $product_categorie) {
//do something
}
}
0

Другие решения

Попробуй это :

if(is_array($product_categories) && sizeof($product_categories) > 0) {
foreach($product_categories as $key => $product_categorie) {
if($manages_post = in_array($key, $this->term_link_conditions)){
return $manages_post;
}
}
}
0

Я нашел способ сделать это

$product_category = $product_categories[$ean];

if (is_array($product_category)) {
$matches = array_intersect($product_category, $this->term_link_conditions);
if(sizeof($matches) > 0){
$manages_post = true;
}
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector