验证字符串是否在数组中

时间:2013-03-29 23:26:43

标签: php

我正在编写一个PHP页面 - 我为我的学院的学生管理软件制作了一个非正式的API。它为我(在另一台服务器上)提供了所有学生及其主教室的阵列。

除了从我的cURL API导出旧学生和渐强学生这一事实外,一切都有效。我有20个(左右)值是唯一应该被解析的值。

非常感谢你!


UPDATE! 这是完整脚本的示例输出:

{"id":"test1","name":"Test - 1w"}, {"id":"test2","name":"Testo - 2w"}, {"id":"IAmOdd","name":"I was in college last year - 14"}

回显输出的脚本是

{\"id\":\"$domid\",\"name\":\"$domout - $klasse\"},");

我再次不想删除最后一个帖子,该帖子的$ klasse值不在$ classrooms数组中。


最终解决方案

我最终这样做了:

if (preg_match("/1a|1b|1c|1d|1e|1u|1s|1y|1x|1w|2a|2b|2c|2d|2e|2u|2s|2y|2x|2w|3a|3b|3c|3d|3e|3u|3s|3y|3x|3w/", $row['navn'])) {
$ok = 1; }
if ($ok == 1) {
    echo utf8_encode("{\"id\":\"$domid\",\"name\":\"$domout - $klasse\"},");
}

这就是我现在用于验证过程的内容:

$classrooms = array('1a','1b','1c','1d','1e','1u','1s','1y','1x','1w','2a','2b','2c','2d','2e','2u','2s','2y','2x','2w','3a','3b','3c','3d','3e','3u','3s','3y','3x','3w');
foreach ($classrooms as $bad) {
 if (strpos($mainclassroom, $bad) !== false) {
       $allow = 0;
 }
 else {
        $allow = 1;         
  }
}

2 个答案:

答案 0 :(得分:0)

我可能会在这里使用array_filter函数。

$filtered_classrooms = array_filter($classrooms, function($value) use $mainclassroom {
    return (strpos($mainclassroom, $value) === false);
});

答案 1 :(得分:0)

所以,你实际上有一个单词列表,它们不应该是输入字符串的一部分。那么正则表达式最方便:

$bad = preg_match('/1[a-x]|2[a-x]|3a|3b|3c|3d/', $mainclassroom);

您当然可以单独列出所有类,而不是字母范围。或者从错误的单词列表中创建一个包含implode("|", $array)的列表。

您的代码问题只是在foreach的每个运行的上的if / else中覆盖了$allow=变量。