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 關注
- 186 瀏覽
添加回答
舉報