2017-09-13 10 views
1

私は2つのテーブルを持っています - それらの値を比較したいです。 $ xmlコードが$ dbにある場合は、product_db変数を作成します。そうでなければ、関連情報とともにエコーを表示します。残念ながら、私は情報をオフセットで定義しています。私は$ xml [0]を$ product_xmlとして試しましたが、関数の誤動作を表示し、配列の最初のインデックスしか取得しませんでしたが、すべてを比較する必要がありました。変数を割り当てるときに定義されていないオフセット

$xml = array(
    array(
     "code" => 456, 
     "stock" => 33, 
     "price" => 249.00, 
    ), 
    array(
     "code" => 789, 
     "stock" => 0, 
     "price" => 199.00, 
    ), 
); 

$db = array(
    array(
     "code" => 456, 
     "stock" => 432, 
     "price" => 251.00, 
    ), 
    array(
     "code" => 789, 
     "stock" => 1, 
     "price" => 299.00, 
    ), 
); 

foreach ($xml as $product_xml) { 

    if (in_array($product_xml['code'], array_column($db, 'code'))) { 

     $product_db = $db[$product_xml['code']]; 
     $update = false; 

    } else { 

     echo 'error'; 
    } 

} 
+1

あなたの予想される出力は? – C2486

答えて

1

実際にあなたが以下のようにここにarray_search()を使用する必要があります: -

foreach ($xml as $product_xml) { 
    $key = array_search($product_xml['code'],array_column($db,'code')); //check value exist in $db array or not and get the key 
    if ($key!==false) { 
     $product_db = $db[$key]; //based on key get the value form $db array and assign it to $product_db 
     print_r($product_db);// print assigned valued 
     $update = false; 
    } else { 
     echo 'error'; 
    } 
} 

出力: - https://eval.in/860464

注: - defined.Soは最初の前に定義された場所をあなたのコードでは$updateがノーでありますforeach()を入力して使用してください。また、私はあなたのコードでこの変数の重要性を見ることができません(どこにも使用していないので)

+0

更新変数は、製品が更新に適しているかどうかを判断するためのフラグとして機能するはずです。 – sauero

+2

私は自分自身をテストする - 私はそれのための8分を持っている、そして私はあなたに最高の答えを与える。それはうまくいくようですが、それ以上の問題があれば、私を助けることができますか? – sauero

+0

さらなる問題については、新しい質問をする必要があります。あなたは答えを得るでしょう - –

関連する問題