PHP数组元素到字符串

时间:2015-08-20 19:29:45

标签: php arrays

我使用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?

由于

4 个答案:

答案 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";
           });