【问题标题】:PHP. Check if an array (multidimensional? numeric?) has some valuesphp。检查一个数组(多维?数字?)是否有一些值
【发布时间】:2014-12-20 10:43:35
【问题描述】:

我需要检查来自数据库(SQLSERVER,所以 odbc)的数组中是否有一些值。

我有这个代码:

$dbhandle = odbc_connect("Driver={SQL Server Native Client 11.0};Server=$myServer;Database=$myDB;", $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer");
$query = "SELECT NumNation, NumPlayers FROM table1";
$result = odbc_exec($dbhandle, $query);

while($rows = odbc_fetch_array($result)){
$myArray[] = $rows['NumNation']."=>".$rows['NumPlayers']; //this

或者我也可以这样:

$myArray[] = $rows; //or this
} // close while
echo ("<br>".implode(",<br>",$myArray).".<br>");

然后我有一些其他代码用于从另一个数据库表中进行选择,然后我想检查我的数组(来自第一个表)中是否有这些数据。

例如,我写了这个:

$NumNation = '123'
$Players   = '456'

if (in_array($NumNation."=>".$NumPlayers, $myArray)) continue;

然后继续我的保存代码和其他内容。

但检查不起作用。

为什么?

如果我 var_dump myArray 我有这个:

array(363) { [0]=> string(31) " =>2000-12-31 00:00:00" [1]=> string(31) " =>2000-12-31 00:00:00" [2]=> string(31) " =>2000-12-31 00:00:00" [3]=> string(36) " 15=>2001-02-28 00:00:00" [4]=> string(36) " 18=>2001-02-28 00:00:00" [5]=> string(36) " 18=>2001-02-28 00:00:00" [6]=> string(36) " 14=>2001-02-15 00:00:00" [7]=> string(36) " 12=>2001-02-10 00:00:00" ....so on until......[347]=> string(31) " 4 =>2013-07-23 00:00:00" [348]=> string(31) " 5 =>2013-07-23 00:00:00" [349]=> string(2) "=>" [350]=> string(36) " 011013=>2013-10-01 00:00:00" [351]=> string(36) " 011013=>2013-10-01 00:00:00" [352]=> string(36) " 011213=>2013-12-01 00:00:00" [353]=> string(36) " 011213=>2013-12-01 00:00:00" [354]=> string(36) " 0112131=>2013-12-01 00:00:00" [355]=> string(36) " 0112131=>2013-12-01 00:00:00" [356]=> string(36) " 100=>2014-11-30 00:00:00" [357]=> string(31) " 1 =>2014-12-02 00:00:00" [358]=> string(31) " 1 =>2014-12-02 00:00:00" [359]=> string(31) " 1 =>2014-12-02 00:00:00" [360]=> string(26) "00032=>2014-02-12 00:00:00" [361]=> string(26) "00032=>2014-02-12 00:00:00" [362]=> string(26) "00017=>2014-02-12 00:00:00" }

【问题讨论】:

  • 什么不起作用?你有错误吗?你有没有 var_dumped $myArray?您的第二个示例看起来与您的 in_array 正在寻找的内容并不相关。
  • 第一个 sn-p 中的 while 循环没有右括号。
  • 另外,如果我在数组中有这对夫妇(Numnation => 123 和 Players => 456),支票会告诉我这对夫妇不是。
  • 是的,我知道 Palec,是一个例子,用于理解逻辑。
  • @AntonyD'Andrea,我 var_dumped myArray。我编辑了问题。

标签: php arrays multidimensional-array


【解决方案1】:

试试这个:

$dbhandle = odbc_connect("Driver={SQL Server Native Client 11.0};Server=$myServer;Database=$myDB;", $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer");
$query = "SELECT NumNation, NumPlayers FROM table1";
$result = odbc_exec($dbhandle, $query);
$myArray = array();
while($rows = odbc_fetch_assoc($result)){
     $myArray[$rows['NumNation']] = $rows['NumPlayers'];
}

$NumNation = 123;
$NumPlayers = 456;
ksort($myArray);
foreach($myArray as $key=>$val) {
     if($key == $NumNation && $val == $NumPlayers) {
         continue;
     }
}

【讨论】:

  • 我觉得foreach 有点重。你不觉得吗?
  • 你知道更好的方法吗?
猜你喜欢
  • 2020-10-25
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多