2010-03-09 5 views
1
$transData = fgets($fp); 
while (!feof ($fp)) 
{ 
    $transArry = explode(" ", $transData); 
    $first = $transArry[0]; 
    $last = $transArry[1]; 
    $Sub = $transArry[2]; 
    $Grade= $transArry[3]; 
    echo "<table width='400' ><colgroup span='1' width='35%' /><colgroup span='2' width='20%' /> <tr><td> ".$first." ".$last." </td><td> ".$Sub." </td><td> ".$Grade." </td></tr></table>"; 
    $transData = fgets($fp); 
} 

Mon professeur me veut changer cette utilisation de explode() à str_split() tout en gardant la même sortie. Comment puis-je faire cela?Remplacer l'utilisation d'exploser() avec str_split()

Répondre

2

Si vous utilisez str_spilt, vous ne pouvez pas utiliser le délimiteur. str_split divise le caractère chaîne par caractère et stocké dans chaque index de tableau. Et en utilisant également str_split(), nous pouvons spécifier la limite de la chaîne à stocker dans l'index de tableau. Si vous utilisez la fonction split() seulement, vous pouvez obtenir la même sortie, ce que explode() a fait.

Au lieu d'exploser, utilisez la ligne suivante.

$transArry = split(" ",$transData); 
+0

Remarque: 'split 'est obsolète depuis PHP 5.3; 'preg_split' et' explode' sont les alternatives recommandées (la première pour si vous avez besoin d'une regex, la seconde pour séparer par une chaîne normale). – cHao

1

La différence entre les deux explode() et str_split() est que utilise un caractère d'éclatement de partager sur et le str_split nécessite le nombre de caractères. Donc, à moins que les champs dans les données d'enregistrement $ transData aient exactement la même longueur, cela nécessitera du code supplémentaire. Si tous les champs/enregistrements ont la même longueur, vous pouvez simplement laisser tomber la fonction. Donc, si chaque champ de l'enregistrement a une longueur de 10 caractères, vous pouvez le faire:

$transArry = str_split($transData, 10);