2017-09-13 83 views
1

我有两个表 - 我想比较它们的值。如果$ 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

注: - 在你的代码$update是没有地方defined.So之前,首先将它定义foreach()然后使用它。此外,我无法在您的代码中看到此变量的任何意义(因为您在其中使用了它)

+0

更新变量应该用作标志,基于此标志我将确定产品是否适合更新。 – sauero

+2

我测试自己 - 我有8分钟的时间,然后我给你最好的答案。它似乎工作,但如果我还有其他问题 - 你能帮助我吗? – sauero

+0

对于其他问题,您必须提出新问题。你会得到答案 - 肯定 –