3 回答
TA贡献1798条经验 获得超3个赞
使用第二个参数array_keys:
if($blue = array_keys($myarray, 'blue')) {
$min = min($blue);
$max = max($blue);
}
TA贡献1815条经验 获得超6个赞
可能这就是答案?
function getMinKey($arr, $search){
if(!in_array($search, $arr)){
return false;
}
foreach($arr as $key => $value){
if($value == $search){
return $key;
}
}
}
function getMaxKey($arr, $search){
if(!in_array($search, $arr)){
return false;
}
$arrCount = count($arr)-1;
for($i = $arrCount; $i >=0; $i--){
if($arr[$i] == $search){
return $i;
}
}
}
TA贡献1829条经验 获得超4个赞
到目前为止,所有解决方案都搜索了整个数组,这可能效率很低。您只需要从头搜索到第一个“蓝色”,从末尾搜索到最后一个“蓝色”。像这样:
$find = "blue";
$first = false;
$last = false;
$max = count($myarray);
$key = 0;
while ($key < $max) {
if ($myarray[$key] == $find) {
$first = $key;
break;
}
$key++;
}
if ($first !== false) {
$key = --$max;
while ($key > 0) {
if ($myarray[$key] == $find) {
$last = $key;
break;
}
$key--;
}
}
请注意,此代码考虑到不会找到任何内容。在这种情况下,$first并且$last将包含false. 它还检查是否$first找到了阻止在显然不需要的情况下对数组进行两次搜索。
- 3 回答
- 0 关注
- 162 浏览
添加回答
举报