Em PHP, as funções include e require são facilmente confundidas. Abaixo usarei um exemplo clássico para ilustrar profundamente suas diferenças.
Quando acessamos frequentemente um banco de dados, podemos escrever a instrução de conexão em um arquivo
con_db.php
<?php
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
Na aplicação real, podemos chamar esse arquivo no programa.
Por exemplo, require("con_db.php") ou include("con_db.php)
, o efeito das duas funções é quase o mesmo.
Mas se você usar
filename.php
<?php
assim
exigir("con_db.php")
função minhafun($par1,$par2)
{Contém instruções para processamento de banco de dados}
.....
minhadiversão($par1,$par2);
.....
minhadiversão($p1,$p2);
?>
O arquivo não pode continuar a ser executado quando atinge myfun, pois as variáveis externas não podem ser obtidas na função (o mesmo vale para include). A menos que $dbh seja passado para a função como uma variável. Isso aumenta a complexidade da chamada de funções.
Podemos resolver esse problema colocando require ou include dentro da função.
Se include for usado, a primeira chamada de função do arquivo ocorrerá sem problemas, mas a segunda chamada não será executada. O motivo é que o banco de dados não pode ser aberto novamente sem fechá-lo. Substitua include por require e está tudo bem.
Em outras palavras, require é semelhante a uma pré-varredura. Quando o programa é executado, seja dentro ou fora da função, o arquivo require será executado primeiro e apenas uma vez. E include chama o arquivo toda vez que ele for executado. Ou seja, após essa execução, na próxima vez que for executado até este ponto, ele será executado novamente.
Portanto, se houver certas instruções em um loop que você deseja executar apenas uma vez, basta incluí-las com require.