2017-03-22 2 views
1

J'ai un ensemble de données que je suis à la recherche de IPA symbols. Je voudrais restreindre le domaine de recherche en fonction de la valeur de $ où indiqué dans le code ci-dessous, mais je ne sais pas comment. EDIT: Où $ est "début" "nucleui" et "coda".Est-ce que quelqu'un sait comment restreindre le domaine de recherche? (Le code ci-dessous est en PHP mais le fichier est lié à un fichier HTML qu'une personne pourrait utiliser pour rechercher les symboles IPA dans l'ensemble de données.) EDIT: Voir le code ajouté en bas.Restreindre le domaine de recherche

//set up variables 
$words = $table[0]; //row 1 of table 
$target = $table[1]; //row 2 
$indices = array(); //used to store column numbers 
$IPAstr = $_POST["ipa"]; 
$where = $_POST["where"]; 

//Find $IPAstr in $target 
for($i=1; $i<count($target); $i++) 
{ 
    if (mb_strpos($target[$i],$IPAstr) !== false) 
     $indices[] = $i;   
} 

//List realizations & count frequency 
for($i=0; $i<count($indices); $i++) 
{ 
    $index = $indices[$i]; 
    $ipalist = array(); 
    echo "<table border=1><tr><td>".$target[$index]." in " . $words[$index]."</td></tr><td>"; 
    //output each speaker and count frequency 
    for ($j=2; $j<count($table); $j++) { 
     echo ($j-1).": ".$table[$j][$index]."<br>"; 
     $ipalist[$table[$j][$index]]++; 
    } 
    echo "<br>"; 
    //output frequency list 
    foreach($ipalist as $ipa=>$fre) 
     echo "$ipa: $fre<br>"; 
    echo "</td></tr></table>"; 
} 

//Code to help search for "onset" "nuclei" and "coda" 
//list onsets only 
echo "Onsets only<br>"; 
for($col=0; $col<count($table[0]); $col++) { 
    $s = $table[0][$col]; 
    if (whichSyllPart($s) == 'o') echo "$s "; 
} 

//list nuclei only 
echo "Nuclei only<br>"; 
for($col=0; $col<count($table[0]); $col++) { 
    $s = $table[0][$col]; 
    if (whichSyllPart($s) == 'n') echo "$s "; 
} 

//list codas only 
echo "Codas only<br>"; 
for($col=0; $col<count($table[0]); $col++) { 
    $s = $table[0][$col]; 
    if (whichSyllPart($s) == 'c') echo "$s "; 
} 
+0

C'est probablement l'un des morceaux de code les plus documentés que j'ai jamais vus. Pourquoi cela ressemble-t-il à un projet d'étudiant? – Forbs

+0

Ne sommes-nous pas tous étudiants? ;) Merci. – Iwakami

Répondre

0

Afin de limiter le domaine de la recherche, vous devez entrer le code suivant dans le cadre de la section « // Trouver IPAstr $ dans la cible de $ » du code.

//Find $IPAstr in $target 
for($i=1; $i<count($target); $i++) 
{ 
    if ($where == whichSyllPart($words[$i])){ 
     if (mb_strpos($target[$i],$IPAstr) !== false) 
      $indices[] = $i; 
    } 
    else if ($where == "everywhere"){ 
     if (mb_strpos($target[$i],$IPAstr) !== false) 
      $indices[] = $i; 
    } 
} 

Pour ce terme, vous avez besoin d'une whichSyllPart fonction()

function whichSyllPart($sy) 
{ 
    $pt = $sy[strlen($sy)-1]; 
    return($pt); 
} 

Cela ajoute un if/else instruction if y compris la fonction whichSyllPart() qui limite la recherche en fonction de la valeur de l'endroit où $ .