Jump to content
johnvickzor

Combinar arrays em PHP

Recommended Posts

Olá

Estou com uma dúvida em uma página que estou alterando.. 

Preciso combinar dois arrays. O primeiro array é o getResult() que recebe as notícias do banco de dados e o segundo é o getResult() que recebe os anúncios que ficarão entre estas notícias.

Vou tentar ser claro, veja:


 
Citar

 


Notícia 1
Notícia 2
Notícia 3
Notícia 4
Notícia 5
- ANÚNCIO 1
Notícia 6
Notícia 7
Notícia 8
Notícia 9
Notícia 10
- ANÚNCIO 2

 


Gostaria de intercalar estes anúncios entre as notícias de forma que quando não existir mais anúncios no banco, ele volte a mostrar o anúncio com ID #1.

Alguém poderia me ajudar? 

Obrigado!

Share this post


Link to post
Share on other sites

Deixa eu ver se entendi, você quer adicionar o getResult() de anuncios na array das noticias para que num certo intervalo de noticias, ele venha a exibir o anuncio?

  • +1 1

Share this post


Link to post
Share on other sites
10 minutos atrás, iJuunin disse:

Deixa eu ver se entendi, você quer adicionar o getResult() de anuncios na array das noticias para que num certo intervalo de noticias, ele venha a exibir o anuncio?


Exatamente. Matou a charada.

Share this post


Link to post
Share on other sites

Cara, espero que ajude ... 

<?php

$arrayNoticias = array(
	'noticia 1',
	'noticia 2',
	'noticia 3',
	'noticia 4',
	'noticia 5',
	'noticia 6',
	'noticia 7',
	'noticia 8',
	'noticia 9',
	'noticia 10',
);
$arrayAnuncios = array(
	'ANUNCIO 01',
	'ANUNCIO 02'
);
/* Intervalo de noticias que serão puladas */
$interval = 5;
/*Reparte a array para que possa ser implementada o array de anuncios */
$chunk = array_chunk($arrayNoticias, $interval, true);
/*Conta quantas vezes foi repartida */
$countNot = count($chunk);
/* Faz um loop pra exibir a array de noticias */
for ($i=0; $i < $countNot; $i++) {
	/*Verifica se existe algum anuncio pra ser exibido */
	if(array_key_exists((int)$i, $arrayAnuncios)){
		/*Adiciona a array dos anuncios dentro da array de noticias */
		$chunk[$i][] = $arrayAnuncios[$i];
	}
	/*Exibe a array completa */
	var_dump($chunk[$i]);
}

No lugar as arrays $arrayNoticias e $arrayAnuncios, tu substitui pelo array que o teu getResult está retornando ... Espero que ajude! Abraço

  • +1 1

Share this post


Link to post
Share on other sites

Show de bola cara. Era isso que eu precisava. 

Já consegui adaptar ao meu script.

 

Mas, tem uma coisa que eu já gostaria de implementar. Que seria, por exemplo: Quando não existir mais anúncios, no caso ele já tiver impresso os 2 anúncios, teria como repetir o primeiro e depois o segundo anúncio respectivamente?

 

Veja:
 

NOTICIA 1
NOTICIA 2
NOTICIA 3
NOTICIA 4
NOTICIA 5
anuncio 1
NOTICIA 6
NOTICIA 7
NOTICIA 8
NOTICIA 9
NOTICIA 10
anuncio 2
NOTICIA 11
NOTICIA 12
NOTICIA 13
NOTICIA 14
NOTICIA 15
anuncio 1
....continua

 

Share this post


Link to post
Share on other sites

Bom, no meu conhecimento, poderia usar o array_rand para buscar uma array aleatoria dentro arrayAnuncios. Ficaria assim :

$arrayNoticias = array(
	'noticia 1',
	'noticia 2',
	'noticia 3',
	'noticia 4',
	'noticia 5',
	'noticia 6',
	'noticia 7',
	'noticia 8',
	'noticia 9',
	'noticia 10',
	'noticia 11',
	'noticia 12',
);

$arrayAnuncios = array(
	'ANUNCIO 01',
	'ANUNCIO 02'
);
/* Intervalo de noticias que serão puladas */
$interval = 3;
/*Reparte a array para que possa ser implementada o array de anuncios */
$chunk = array_chunk($arrayNoticias, $interval, true);
/*Conta quantas vezes foi repartida */
$countNot = count($chunk);
/* Faz um loop pra exibir a array de noticias */
for ($i=0; $i < $countNot; $i++) {
	/*Verifica se existe algum anuncio pra ser exibido */
	if(!empty($arrayAnuncios)){
		$buscaAleatoria = array_rand($arrayAnuncios, 1);
		$chunk[$i][] = $arrayAnuncios[$buscaAleatoria];
	}
	/*Exibe a array completa */
	var_dump($chunk[$i]);
}

 

  • +1 1

Share this post


Link to post
Share on other sites

tu pode também iterar uma array dentro da outra

$t1 = count($array1);
$t2 = count($array2);
$n = 0;

for($a = 0; $a < $t1; $a++){

    echo $array1[$a];

    if($a % 5 == 0){

        echo $array2[$n];

        if($n < $t2){
            $n = $n + 1;
        }else{
            $n = 0;
        }
    }

}

 

vê aí se consegue entender

  • +1 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.