Tem uma coisa em JAVA que eu gosto muito, sao os ArrayList, nada mais é que arrays, porem tem muito mais métodos do que o convencional, o PHP também possui muitos métodos para array, porém o array_diff não funciona bem com array de objetos, e é interessante vc ter um array de objetos… mas enfim para contornar isso criei uma função !
Notem ele pega valores do array de objetos 1 que nao estao no array 2
/**
* $var = o atributo para comparar
*/
function diff ($var,$array1,$array2){
$ar_tmp1 = array();//Array temporário para trabalhar com array1
$ar_tmp2 = array();//Array temporário para trabalhar com array2
$ar_tmp3 = array();//Array para guardar as keys diferentes
$ar_return = array();//Array que recoloca os objetos e retorna
/**
* Guardando no $ar_tmp1 os valores das keys
* poderia usar o foreach também, mas uso o for
* para ficar mais claro as minhas intenções
*/
for ($i = 0;$i < count($array1);$i++){
$ar_tmp1[$i] = $array1[$i]->$var;
}
/**
* Guardando no $ar_tmp1 os valores das keys
*/
for ($i = 0;$i <count ($array2);$i++){
$ar_tmp2[$i] = $array2[$i]->$var;
}
/**
* A mágica acontence aqui, usamos o array_values para zerar os indices
* e depois usamos o array_diff que compara as keys, ou seja, valores do $ar_tmp1 que nao
* estao presente no $ar_tmp2
*/
$ar_tmp3 = array_values(array_diff($ar_tmp1,$ar_tmp2));
/**
* Agora que temos as keys diferentes montamos o array com os objetos
* referentes as keys
*/
for ($i = 0;$i < count($ar_tmp3);$i++){
for ($j = 0; $j < count ($ar_tmp1);$j++){
if ($array1[$j]->$var == $ar_tmp3[$i]){
$ar_return[$i] = $array1[$j];
}
}
}
return $ar_return;
}
/**
* Para testar
*/
$obj1 = new stdClass();//Classe Standart nativa do PHP
$obj1->id = 1;
$obj1->nome = 'Objeto 1';
$obj2 = new stdClass();
$obj2->id = 2;
$obj2->nome = 'Objeto 2';
$obj3 = new stdClass();
$obj3->id = 3;
$obj3->nome = 'Objeto 3';
$ar1 = array($obj1,$obj2);
$ar2 = array($obj2,$obj3);
print_r(diff('id',$ar1,$ar2));
Para quem gosta de trabalhar com array de objetos, essa seria uma boa função


Vc pode mandar o dvd para valdirenegs@gmail.com ou pelo Fale Conosco.
Obrigada por visitar o Jesus Reina.
Parabéns por seu site, sou sua fã, aprendo muito aqui.
Abraços e Fica na Paz do Senhor Jesus.
Tá, como é que usa? Qual o resultado? Como funcionaria na prática?
Usa assim, caso vc implemente 2 arrays de objetos, e vc queira ver quais elementos do array1 que nao estao presente no array2, em arrays comuns o array_diff serve, mas para array de objetos nao funciona !
O uso que estou fazendo é o seguinte, no portal eu coleto todas as matérias que podem ir para o ar num array e no outro as materias que efetivamente estao no ar, dou o diff neles e vejo qual que não foi !
Respondido e entendido !?