0

我试图在数组中找到一个字符串,然后返回索引并检查另一个数组中的索引以查看它是否匹配(我正在寻找数组中的打开时间和匹配的关闭时间)。

该字符串可能在 中出现多次$openList,并且它不应该停止检查,直到在$openList和中找到一对匹配时间$closeListarray_search只找到第一次出现,所以我无法创建一个有效且有效的循环(我将使用不同的搜索值多次运行它)。

到目前为止,我有类似的东西:

$openList = array("10:00", "9:00", "10:15", "9:00", "2:30");
$closeList = array("2:15", "5:30", "10:30", "10:00", "3:00");

$found_key = false;
while (($key = array_search("9:00", $openList)) !== NULL) {
  if ($closeList[$key] == "10:00") {
    $found_key = true;
    echo "found it at position ".$key;
    break;
  }
}
if (!$found_key) echo "time doesn't exist";

如何以有效的方式修复它?

4

3 回答 3

1

很确定 array_keys 正是您正在寻找的:

http://www.php.net/manual/en/function.array-keys.php

于 2013-10-01T16:59:11.840 回答
0

感谢您查看array_keys@David Nguyen 的提示。这似乎有效:

$openList = array("10:00", "9:00", "10:15", "9:00", "2:30");
$closeList = array("2:15", "5:30", "10:30", "10:00", "3:00");

$found_key = false;
foreach (array_keys($openList, "9:00") AS $key) {
  if ($closeList[$key] == "10:00") {
    $found_key = true;
    echo "found it at position ".$key;
    break;
  }
}
if (!$found_key) echo "time doesn't exist";
于 2013-10-01T17:37:30.690 回答
0

如果列表中没有"9:00",您当前的循环将永远运行。相反,使用 foreach 循环来查看$openList数组:

foreach ( $openList as $startTimeKey => $startTimeValue )
{
    //Found our start time
    if ( $startTimeKey === "9:00" && isset( $closeList[ $startTimeValue ] ) && $closeList[ $startTimeValue ] === "10:00" )
    {
        $found_key = true;
        break;
    }
}
于 2013-10-01T17:05:14.433 回答