2017-09-11 13 views
0

を持つ配列要素を通じてのみループ私はすべての製品とそのすべてのカテゴリが含まれている次の配列を作成しています: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は整数とカテゴリは文字列です)

それから私は、製品のカテゴリのいずれかが他の変数と一致するかどうかを確認し、場合thatsの場合は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

'$のproduct_categories'と' $のean'の値が何であるかを行う方法を考え出しましたか? –

+0

配列が空であるか、存在しないことを意味します。 – Akintunde007

+0

'$ product_categorie'は実際にはカテゴリの配列ですか?あなたの命名はとても混乱しています。また、セーフティネットは含まれていません。たとえば、商品にカテゴリがない場合は、商品IDがあるとは思っても、配列には表示されませんが、コンテンツはカテゴリの空の配列になります。最後に、すべてを取得せずにPHPコードでフィルタリングする代わりに、 '$ ean'のカテゴリだけをクエリすることを検討しましたか? – GolezTrol

答えて

0

あなたは何をするforeachに渡していることはあなたはために起こっているのかわからない場合is_array機能

を使用して配列であることを確認する必要がありますように見えます配列は、必ず次のPHPのコード例を使用してチェックすることができます。

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

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

あなたのforeach文をすべてチェックし、その前にあるものが実際に配列であることを確認してください。それをダンプするにはvar_dumpを使用してください。

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

私はin_arrayのキーをチェックしたくないです、特定のキー(product_nr(= ean))で値をチェックしたいと思います。たとえば、キーが10002の場合、次の値がチェックされます。[10002] => 1 2 => 8 //カテゴリ1,2,8をチェック ( [0] => 1 [1] => 2 [2] – Kvasha

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