Eu acho que array_search é um código muito mais legível do que usar o método array_diff. Upvote
kendepelchin
@ zombat Gostaria de saber se a ordem tem algo a ver com os resultados. É possível que o shuffle coloque o valor que estamos procurando mais perto da frente ou do final. Fora isso ... +1
A solução mais poderosa seria usar array_filter, o que permite definir sua própria função de filtragem.
Mas alguns podem dizer que é um pouco exagerado, na sua situação ...
Um foreachloop simples para percorrer a matriz e remover o item que você não deseja deve ser suficiente.
Algo assim, no seu caso, provavelmente deve fazer o truque:
foreach($items as $key => $value){if($value == $id){
unset($items[$key]);// If you know you only have one line to remove, you can decomment the next line, to stop looping//break;}}
Respostas:
Isso pode ser conseguido com uma linha simples.
Tendo esta matriz:
Você pode fazer:
E o valor de
$arr
será:Espero que ajude a escrever um código bonito.
fonte
array_diff
função é não-destrutivo, ele retorna uma nova matriz.$referenced = array_diff($referenced, $items_to_remove);
Estou adicionando uma segunda resposta. Eu escrevi um script rápido de benchmarking para tentar vários métodos aqui.
O terceiro método,
array_keys()
com o parâmetro de pesquisa opcional especificado, parece ser de longe o melhor método. Exemplo de saída:A julgar por isso, a solução que eu usaria então seria:
fonte
E se:
ou para vários valores:
Isso impediria a perda de chave também, o que é um efeito colateral do
array_flip()
.fonte
remover
$rm_val
de$arr
fonte
A solução mais poderosa seria usar
array_filter
, o que permite definir sua própria função de filtragem.Mas alguns podem dizer que é um pouco exagerado, na sua situação ...
Um
foreach
loop simples para percorrer a matriz e remover o item que você não deseja deve ser suficiente.Algo assim, no seu caso, provavelmente deve fazer o truque:
fonte
Tente array_search ()
fonte
array_keys()
parece ter um desempenho melhor do quearray_search()
nesta tarefa.Suas soluções só funcionam se você tiver valores exclusivos em sua matriz
Vejo:
Uma maneira melhor seria desconfigurar com array_search , em um loop, se necessário.
fonte
sem flip:
fonte
fonte
Você pode usar a função array_splice para esta operação Ref: array_splice
fonte