insertar - php array_push()-> Cómo no empujar si la matriz ya contiene el valor
insert php array (8)
Como esta pregunta no utiliza el código de mejores prácticas para comenzar, encuentro que todas las respuestas son demasiado complicadas.
Resolviendo código en cuestión:
Básicamente, lo que se intenta hacer en cuestión es filtrar las repeticiones. Mejor enfoque:
$liste = array_unique($something);
Si agrega elementos a una matriz que no está vacía:
array_unique(array_merge($liste, $something));
Si está utilizando array_push ():
A menos que realmente esté utilizando el valor de retorno de matriz push, debería usar:
$liste[] = $value;
para sintaxis más corta
Estoy usando el siguiente bucle para agregar elementos a una matriz mía llamada $ liste. Me gustaría saber si es posible de alguna manera no agregar $ value a la matriz $ liste si el valor ya está en la matriz. Espero que quede claro. Gracias de antemano.
$liste = array();
foreach($something as $value){
array_push($liste, $value);
}
Dos opciones realmente.
Opción 1: compruebe cada elemento y no presione si el elemento está allí. Básicamente lo que estás pidiendo:
foreach($something as $value) {
if( !in_array($value,$liste)) array_push($liste,$value);
}
Opción 2: agregarlos de todos modos y eliminar duplicados después de:
foreach($something as $value) {
array_push($liste,$value);
}
$liste = array_unique($liste);
Sin embargo, por lo que parece, puedes estar buscando $liste = array_unique($something);
.
Guarde la lógica y mejore la velocidad manteniéndola sin lógica. Solo sigue sobrescribiendo.
$list = array();
foreach ($something as $value) {
if (!is_object($value) && !is_array($value)) {
$list[$value] = $value
}
}
$list = array_values($list);
La respuesta correcta es mucho más simple. Empuje todo, pero luego use la función array_unique()
:
array_push($array, $new_member);
$array = array_unique($array);
Las grandes respuestas ya están presentes anteriormente, pero si tiene múltiples array_push () en todo su código, sería un dolor escribir las declaraciones if (in_array ()) cada vez.
Aquí hay una solución que acortará su código para ese caso: use una función separada.
function arr_inserter($arr,$add){ //to prevent duplicate when inserting
if(!in_array($add,$arr))
array_push($arr,$add);
return $arr;
}
Luego, en todas las necesidades de tu array_push (), puedes llamar a esa función arriba, así:
$liste = array();
foreach($something as $value){
$liste = arr_inserter($liste, $value);
}
Si $ valor ya está presente, $ liste permanece intacto.
Si $ valor aún no está presente, se agrega a $ liste.
Espero que ayude.
Simplemente puede verificar esta condición antes de llamar a array_push()
. Use array_search()
y use una comparación fuerte con false
para ver si el valor está presente:
foreach( $something as $value ){
if( array_search( $value, $liste, true ) === false ){
array_push( $liste, $value );
}
}
(Por cierto: Agregar ,true
a array_search
para usar "comprobación estricta". Esto usará ===
para comparaciones en lugar de ==
)
Verifica si está allí, usando in_array
, antes de empujar.
foreach($something as $value){
if(!in_array($value, $liste, true)){
array_push($liste, $value);
}
}
El ,true
habilita "comprobación estricta". Esto compara elementos utilizando ===
lugar de ==
.
quizás quieras usarlo como una matriz asociativa en su lugar. se implementa como (algo así como) una tabla hash , por lo que obtiene un tiempo de inserción constante en lugar de lineal.
function find_uniq( $something ) {
foreach($something as $value){
$liste[$value]++;
}
return array_keys( $liste );
}