Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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]);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.