简而言之 - 我有两个$ XML和$ DB数组,两者都有像代码一样的值。
我预先考虑第一个,我下载代码并在第二个$ DB中查找代码。如果$ DB包含代码 - 我将显示存在的信息,如果不包含 - 它不显示。至少我希望它是 - 因为代替键中数据的信息,我得到了其他的
$XML = array(
array(
"code" => 456,
),
array(
"code" => 789,
),
);
$DB = array(
array(
"code" => 456,
),
array(
"code" => 789,
),
);
foreach ($XML as $product) {
if (array_key_exists($product['code'], $DB)) {
echo "Key is in DB array";
} else {
echo "Key isn't in DB array";
}
}
答案 0 :(得分:1)
如果您只是在两个数组中的共享代码之后,可以使用array_intersect和array_column。
<?php
function codes_shared(array $one, array $two) {
return array_intersect(array_column($one, 'code'), array_column($two, 'code'));
}
示例:
$xml = array(
array(
"code" => 456,
),
array(
"code" => 789,
),
);
$one = array(
array(
"code" => 789,
),
array(
"code" => 123,
),
);
$two = array(
array(
"code" => 456,
),
array(
"code" => 99,
),
);
$three = array(
array(
"code" => 33,
),
array(
"code" => 1,
),
);
$four = array(
array(
"code" => 456,
),
array(
"code" => 789,
),
);
foreach([$one, $two, $three, $four] as $db) {
var_dump(codes_shared($xml, $db));
}
输出:
array(1) {
[1]=>
int(789)
}
array(1) {
[0]=>
int(456)
}
array(0) {
}
array(2) {
[0]=>
int(456)
[1]=>
int(789)
}
答案 1 :(得分:0)
您正在尝试将一个数组的值检查为另一个数组的值。
所以您需要in_array array_column,如下所示: -
<强> 说明: - 强>
1. in_array
搜索数组中是否存在值。
2. array_column
根据从多维数组中给出的索引名称给出一维数组。
3.现在代码将变成这样: -
if (in_array(456, Array(0 => 456,1 => 789)){
现在它可以正常工作。
$db_array = array_column($DB,'code');
foreach ($XML as $product) {
if (in_array($product['code'],$db_array )) {
echo "Product code ".$product['code']." is in DB array\n";
} else {
echo "Product code ".$product['code']." isn't in DB array\n";
}
}
输出: - https://eval.in/860191