Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou tendo problemas com array_diff(), existe a diferença entre os arrays, mas ele sempre joga o valor 0, como se n tivesse nada...
Neste array contém, titulo, data e descricao, isso teria algum problema?
Array ( [0] => Array ( [titulo] => associated british foods - Interceder: real time news feed [descricao] => PureCircle signs stevia JV with Dohler - Australian Food NewsPureCircle signs stevia JV with Dohler Stevia supplier PureCircle has signed another venture to ...
interceder.net/list/associated-british-foods [data] => 1 October 2010, 6:19 am [by] => (author unknown) [link] => [http://www.google.com/url?sa=X&q=http://interceder.net/list/associated-british-foods&ct=ga&cad=:s7:f1:v1:d2:i1:lt:e0:p0:t1285924732:&cd=wmeUYkE5L4s&usg=AFQjCNGinvDiRexa-H0-XK2n-dMRQOOCkg](http://www.google.com/url?sa=X&q=http://interceder.net/list/associated-british-foods&ct=ga&cad=:s7:f1:v1:d2:i1:lt:e0:p0:t1285924732:&cd=wmeUYkE5L4s&usg=AFQjCNGinvDiRexa-H0-XK2n-dMRQOOCkg) )Não aparece nenhum erro, na realidade ele so não mostra nada, como se não tivesse nenhum diferente.
A minha duvida é, ele verifica todos os elementos do array?
Obs: eu uso CodeIgniter
Grato
<?php
class Contador extends Controller {
function contador()
{
parent::Controller();
}
function index() {
ini_set("memory_limit", "16M");
$this->load->model('insert_module');
// carrega library pie
$this->load->library('simplepie');
$feed_link = $this->db->get("feed_link");
foreach($feed_link->result() as $result){
$limpo = (array) $result;
$this->simplepie->set_feed_url($feed_link['url']);
$this->simplepie->set_cache_location(APPPATH.'cache/rss');
$this->simplepie->init();
$this->simplepie->handle_content_type();
// cria array para checar as datas
foreach($this->simplepie->get_items() as $check){
$by = (array) $check->get_author();
$checado[] = array("titulo" => $check->get_title(), "descricao" => $check->get_content(), "data" => $check->get_date(),"by" => $by['name'], "link" => $check->get_link());
}
// carrega os conteudo do banco e transforma em array pra comparar com array_diff
$feed_content = $this->db->get("feed");
$feed_banco = $feed_content->result_array();
foreach($feed_banco as $item){
$checado_banco[] = array("titulo" => $item['titulo'], "descricao" => $item['descricao'], "data" => $item['data'], "by" => $item['by'], "link" => $item['link']);
}
$array_final = array_diff_assoc($checado,$checado_banco);
$total = count($array_final);
foreach($checado as $item_final) {
//inclui no banco
$content_post = array(
'titulo' => $item_final['titulo'],
'descricao' => $item_final['descricao'],
'link' => $item_final['link'],
'data' => $item_final['data'],
'by' => $item_final['by'],
'modo' => "none",
);
$this->insert_module->inseri_conteudo_banco($content_post);
}
$data['total'] = $total;
$data['main_content'] = "contador";
$this->parser->parse("includes/template",$data);
/* foreach($this->simplepie->get_items() as $item) {
//inclui no banco
$author = (array) $item->get_author();
$content_post = array(
'titulo' => $item->get_title(),
'descricao' => $item->get_content(),
'link' => $item->get_link(),
'data' => $item->get_date(),
'by' => $author['name'],
'modo' => "none",
);
$this->insert_module->inseri_conteudo_feed($content_post);
die();
}*/
}
}
}Faz assim:
echo '<pre>';
echo 'Checado<br/>';
print_r($checado);
echo '<br/>Banco<br/>';
print_r($checado_banco);
$array_final = array_diff_assoc($checado,$checado_banco);
echo 'Array Dif<br/>';
print_r($array_final);
Posta aqui a saída e como você esperava que ficasse.
Carlos Eduardo
Link para o resultado: http://dohler.webot.com.br/index.php/contador
Como você pode ver, ele tem diferença, mas não mostra a diferença...
Os "indices" são: titulo, descricão, data, by e link.
Obrigado pela ajuda
pode fechar o post, acabei resolvendo meu problema de outra forma, mais simples até.
De qualquer forma, obrigado pela ajuda.
Abs
Como você está utilizando? Poste o código completo, além de possíveis mensagens de erro exatamente como elas aparecem.
Carlos Eduardo