我有两张桌子 - 我想比较他们的价值观。如果$ 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';
}
}
答案 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)