分配变量

时间:2017-09-13 06:10:44

标签: php arrays

我有两张桌子 - 我想比较他们的价值观。如果$ xml代码在$ db中,我创建product_db变量,如果没有 - 我将显示带有相关信息的echo。不幸的是 - 我得到的信息未定义偏移。我尝试使用$ 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 个答案:

答案 0 :(得分: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中没有定义的位置。首先在foreach()之前定义它,然后使用它。此外,我无法在您的代码中看到此变量的任何重要性(因为您使用了no-where)