我一直试图找出如何将所有行提取到数组中,并检查某些输入是否作为该数组中的条目存在。
$name = $_POST["name"];
$myarray = array();
$getnames = "SELECT NAME FROM PEOPLE";
$names = oci_parse($conn,$names);
oci_execute($names);
while (($row = oci_fetch_row($names)) != false) {
$myarray[] = oci_fetch_row($names);
}
if(!in_array($name, $myarray)) {
echo "That name doesn't exist.";
}
在我的表中有:
NAME
Fred
Bob
Hamlet
在我使用" Bob"作为输入,我使用var_dump($myarray)
只是为了查看该数组中包含的内容:
array(2) { [0]=> array(1) { [0]=> string(3) "Bob" } [1]=> bool(false) }
我的输出是:
That name doesn't exist.
输出是我没想到的(正如我预期的那样#34; Bob"在数组中),所以我猜测我的方法是将行输入到阵列是不够的。
我可以做什么才能将行提取到数组中?
答案 0 :(得分:2)
它不起作用,因为Bob在$myarray
中不作为值存在,但它在$myarray[0][0]
中,即。{作为$myarray
的第一项中的值。
您需要一个递归到结果数组的函数:
function recursive_in_array($needle, $haystack) {
if (!is_array($haystack)) return false;
$match = false;
foreach ($haystack as $item) {
if (is_array($item)) $match = recursive_in_array($needle, $item);
if ($match || in_array($needle, $haystack)) return true;
}
return false;
}
我只是快速测试了这个,但它应该可以解决这个问题。