我正在尝试在数组中找到一个字符串然后返回索引并检查另一个数组中的索引以查看它是否匹配(我正在寻找开放时间并分别在数组中匹配关闭时间)。 / p>
该字符串可能会在$openList
中出现多次,并且在$openList
和$closeList
找到一对匹配时间之前,它不应停止检查。 array_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";
如何以有效的方式解决问题?
答案 0 :(得分:1)
非常确定array_keys正是您所寻找的:
答案 1 :(得分: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;
}
}
答案 2 :(得分: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";