【问题标题】:Fetch all table rows to array PHP获取所有表行到数组 PHP
【发布时间】:2014-11-07 15:25:53
【问题描述】:

我一直在尝试弄清楚如何将所有行提取到一个数组中,并检查该数组中是否存在某些输入作为条目。

$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.

输出是我没想到的(因为我预计“Bob”会出现在数组中),所以我猜测我将行提取到数组中的方法是不够的。

为了将行提取到数组中,我该怎么做?

【问题讨论】:

  • SELECT NAME 但你的专栏是NAMES ?
  • 我的错,这是一个错字。

标签: php arrays oracle oracle-call-interface


【解决方案1】:

它不起作用,因为 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;
}

我只是快速测试了这个,但它应该可以解决问题。

【讨论】:

  • 我怎样才能使用这个功能?喜欢if (recursive_in_array($name, $myarray)==true) { #do something }
  • 完全正确,或者只是if (recursive_in_array($name, $myarray)) {。两者都做同样的事情。
猜你喜欢
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2014-10-05
相关资源
最近更新 更多