您好,我有一个代码可以检查 xml 文件中的重复项:
XML:
<?xml version="1.0"?>
<profielen>
<profiel>
<voornaam>a</voornaam>
<achternaam>a</achternaam>
<adres>a</adres>
<postcode>a</postcode>
<plaats>a</plaats>
<email>a</email>
</profiel>
<profiel>
<voornaam>b</voornaam>
<achternaam>b</achternaam>
<adres>b</adres>
<postcode>b</postcode>
<plaats>b</plaats>
<email>b</email>
</profiel>
<profiel>
<voornaam>c</voornaam>
<achternaam>c</achternaam>
<adres>c</adres>
<postcode>c</postcode>
<plaats>c</plaats>
<email>c</email>
</profiel>
<profiel>
<voornaam>c</voornaam>
<achternaam>c</achternaam>
<adres>c</adres>
<postcode>cL</postcode>
<plaats>c</plaats>
<email>c</email>
</profiel>
</profielen>
我可以选择 6 个复选框,选择的越多,它过滤的越多。如果我选择名字,只有 a,b 和名字为 c 的第一个人可以留下,第二个人将被忽略。
现在我有这个代码:
$xml = simplexml_load_file('/xampp/htdocs/UploadifyZWP/uploads/profiel.xml');
//Load the xml file into an array
$myArray = $_REQUEST['checkboxarray'];
//Contains the selected value (firstname = 0,lastname = 1 etc..)
if(count($myArray) <1){
//If $myArray is empty it means no checkboxes are selected and there will be no filtering
count($xml);
}else{
$fields = $myArray;
//If at least one field is selected, this code runs:
switch(count($myArray)){
case 1:
//One checkbox selected
//Array where the profiles go withouth duplicates
$profile = array();
$passed = 0;
$teller = 0;
//Loops through all the profiles in the xml array
while($passed < count($xml)){
$add = false;
//Checks for all the selected values, 1 checkbox is selected so only 0 (firstname) is selected and goes into $field
foreach($fields as $field){
if(count($profile) < 1){
//If profile is empty, add the first profile from the xml array
$add = true;
}else {
if($profile[$teller][$field] != $xml->profiel[$teller][$field])
{
$add = true;
break;
}else{
$teller++;
$passed++;
}
}
}
if($add = true){
//toevoegen
$profile[$teller] = $xml->profiel[$teller];
$teller++;
$passed++;
}
}
echo count($profile);
print_r($profile);
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
default: echo "error";
}
}
所以我把所有正确的配置文件放在 $profile 数组中,重复的将被忽略。现在为了测试,我打印了数组配置文件,看看它是否做了它应该做的事情,但结果不是我想要的。第一个 (a) 将被添加到 $profiles,第二个 (b) 不会,第三个 (c) 会再次添加,第四个 (duplicate(d)) 不会。现在,如果我再添加 2 个配置文件 (e,f),将添加 e 而不会添加 f。现在我在安装调试器时遇到了麻烦,所以我看不出哪里出错了。我还收到一条错误消息:
注意:未定义的偏移量:第37行C:\xampp\htdocs\UploadifyZWP\ontdubbelen.php中的 1
和
注意:未定义的偏移量:第37行C:\xampp\htdocs\UploadifyZWP\ontdubbelen.php中的 3
有谁知道哪里出了问题,为什么?