我使用PHPExcel将Excel文件的元素放入数组中。然后我做
print_r($worksheets);
其中$ worksheets是通过PHPExcel创建的数组。输出是
Array (
[enquiry] => Array (
[0] => Array (
[0] => 86.141.247.93
)
[1] => Array (
[0] => 188.141.76.143
)
[2] => Array (
[0] => 2.29.20.161
)
)
)
我需要做的是将每个IP作为字符串传递给函数。所以我正在尝试的是这个
foreach($worksheets as $ip) {
$count = 0;
if ($SpamProtecter->CheckIP($ip[$count][0])) {
print_r("SPAM");
} else {
print_r("GOOD");
}
$count++;
}
我遇到的问题是它只打印出一个结果。如何将每个数组元素作为String传递给CheckIP?
由于
答案 0 :(得分:3)
您的阵列中有一个中间级别。请记住,foreach
遍历顶级元素。你这里有3层
foreach($worksheets['enquiry'] as $ip) { //iterate tier 1
if ($SpamProtecter->CheckIP($ip[0])) { //grab tier 3
print_r("SPAM");
} else {
print_r("GOOD");
}
}
答案 1 :(得分:2)
您的$worksheets
数组只有一个密钥:enquiry
,这就是您只获得单个结果输出的原因。试试这个:
foreach($worksheets['enquiry']) as $ip) {
if($SpamProtector->CheckIP($ip[0]) {
// ...
我认为你也可以摆脱那个内部$count
变量,因为它已经不再使用了。
答案 2 :(得分:2)
这可行吗
foreach($worksheets['enquiry'] as $ip) {
if ($SpamProtecter->CheckIP($ip[0])) {
print_r("SPAM");
} else {
print_r("GOOD");
}
}
答案 3 :(得分:1)
array_walk适用于您希望对数组中的每个元素执行操作的情况。
array_walk($worksheets["enquiry"],
function ($a) use ($SpamProtecter) {
echo $SpamProtecter->CheckIP($a[0])?"GOOD":"BAD";
});