Stack Overflow en español Asked on December 30, 2021
Tengo dos arrays en php; el primer arrray se va armando en base a números al azar y puede tener hasta 99 posiciones, el segundo array solo tiene 14 posiciones. Necesito comparar el primero con el segundo hasta que todos los datos del primer array se encuentren en el segundo array y así devolver un TRUE
, no se si me explico bien. Dejo dos ejemplos, por si acaso.
array ( [0] => 3 [1] => 15 [2] => 21 [3] => 27 [4] => 30 [5] => 36
[6] => 39 [7] => 46 [8] => 51 [9] => 52 [10] => 55 [11] => 62 [12] => 64
[13] => 80 [14] => 81 [15] => 82 [16] => 87 [17] => 88 [18] => 90 )
//primer array, que se forma al azar
//Segundo array, solo tiene 14 posiciones
array ( [0] => 67 [1] => 89 [2] => 8 [3] => 35 [4] => 39 [5] => 54
[6] => 98 [7] => 73 [8] => 13 [9] => 72 [10] => 46 [11] => 60
[12] => 26 [13] => 9 [14] => 23 )
Agradecería una respuesta gracias
Podría ser interesante el uso de array_diff()
para este caso:
Compara array1 con uno o más arrays y devuelve los valores de array1 que no estén presentes en ninguno de los otros arrays.
Si sólo quieres saber si todos los elementos de $smallArray
están en $bigArray
, bastaría con algo como esto:
$status = !array_diff($smallArray, $bigArray) ? TRUE : FALSE;
Ahí, $status
será TRUE
o FALSE
según el caso.
Veamos dos ejemplos simples:
Todos existen:
$bigArray=array (3,15,21,27,30,36,39,46,51,52,55,62,64,80,81,82,87,88,90);
$smallArray=array (3,15);
$status = !array_diff($smallArray, $bigArray) ? TRUE : FALSE;
Salida:
bool(true)
No todos existen:
$bigArray=array (3,15,21,27,30,36,39,46,51,52,55,62,64,80,81,82,87,88,90);
$smallArray=array (3,15,101);
$status = !array_diff($smallArray, $bigArray) ? TRUE : FALSE;
Salida:
bool(false)
Otro aspecto que puede ser interesante es que array_diff
te devuelve un array con los elemento no existentes. Si haces un var_dump($tatus);
en el último ejemplo, tendrás esto:
array(1) {
[2]=>
int(101)
}
Te mostrará el elemento que no existe en $bigArray
y el índice que ese elemento ocupa en $smallArray
.
Answered by A. Cedano on December 30, 2021
puedes hacerlo asi:
$arr = array();
$arr2=array(23,45,23,56,76,45,12,34,45,56,67,78,23,43);
for ($i=0;$i<100;$i++) {
array_push($arr,$i);
}
function verificar($arr,$arr2){
// contador
$contador=0;
// recorremos el arreglo 2
// 14 ciclos es mas rapido que 100
foreach($arr2 as $val){
//validamos que el valor exista dentro del arreglo
if (in_array($val, $arr)) {
// aumentamos en 1 el contador
$contador++;
}
}
// retorna true
// si todos los elementos estan el arreglo
// ejemplo 14 == 14 //true
// ejemplo 13 == 14 //false
return $contador === count($arr2);
}
echo verificar($arr,$arr2) ? "todos estan en el arreglo":"faltan elementos en el arreglo";
Answered by Bryro on December 30, 2021
<?php
$valores = array();
$valores2=array(23,45,23,56,76,45,12,34,45,56,67,78,23,43);
$max_num = 99;
for ($x=0;$x<$max_num;$x++) {
$num_aleatorio = rand(1,100);
array_push($valores,$num_aleatorio);
}
echo "</br>";
for($i=0;$i<count($valores2);$i++){
echo $valores2[$i];
echo "</br>";
echo $valores[$i];
echo "</br>";
if($valores2[$i]==$valores[$i]){
echo "true";
}else{
echo "false";
}
}
?>
aqui retorna true cuando los valores coinciden en los primeros 14 espero que sea lo que buscas
Answered by Alberto Julio Arce Escolar on December 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP