2017-08-11 1 views
0

Je supprime les détails d'un certain site Web. alors je voulais analyser html en tableau PHP.comment mettre les clés dans le tableau php

Je veux afficher un tableau comme celui-ci. Je dois ajouter une clé pour que je puisse déterminer facilement quelles données je veux utiliser à l'avenir.

[info] => Array 
    (
     [0] => info1 
     [1] => info2 
    ) 

Voici mon code:

$hk = array('info'); 
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) { 
    $hometps[] = $home->plaintext; 
} 
print_r(array_fill_keys($hk,$hometps)); 

mais la production va me montrer:

Array 
(
    [info] => Array 
     (
      [0] => info1 
      [1] => info2 
     ) 

) 
+0

Je pense que vous pouvez être confus sur la façon dont les tableaux regardent quand ils sont imprimés à l'écran. Préféreriez-vous avoir une variable appelée 'info' et il s'agit juste d'un tableau à 1 dimension/indexé? Peut-être pourriez-vous clarifier la structure de votre tableau de sortie en ajoutant un peu plus de données/niveaux d'entrée. – mickmackusa

Répondre

0

Je pense que tout le monde est confus au sujet de la question et la question ici. Ce qui suit vous donnera un tableau nommé $info, qui contiendra les valeurs renvoyées de la boucle foreach:

$info = Array(); 
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) { 
    array_push($info,$home->plaintext); 
} 
print_r($info); 

Affichera:

Array ( 
    [0] => info1 
    [1] => info2 
) 

Hope this était ce que vous essayez d'atteindre.

+0

$ hk = array ('info'); $ hometps = Array(); foreach ($ html-> find ('div [id = "home"] div [id = "topinfo"] p') as $ home) { $ hometps [] = $ home-> texte en clair; } print_r (array_fill_keys ($ hk, $ hometps)); Je l'ai fait comme ça, en me donnant toujours la même sortie non désirée –

+0

Voyez si cela berce votre bateau. – Aydin4ik

0

L'élément de tableau ne peut pas rester seul. Considérant que vous voulez info comme un index, il doit faire partie d'un tableau. Si vous voulez la liste des informations disponibles puis les affecter à $info variable et lorsque vous print_r ($ info), comme ceci:

$info = array(); 
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $home) { 
    $info[] = $home->plaintext; 
} 
print_r($info); 

Et vous obtiendrez:

Array 
    (
     [0] => info1 
     [1] => info2 
    ) 
0

On dirait que vous pourriez essayer de renommer la valeur de représentation dans le tableau aussi connu comme la «clé» je suppose. Je recommande de le faire directement à la sortie du HTML en allant dans le foreach. Cela devrait résoudre votre problème. Il ressemblerait à quelque chose comme ceci (exemple original en bas):

$hk = array('info'); 
foreach($html->find('div[id="home"] div[id="topinfo"] p') as $hk => $home) { 
$hometps[] = $home->plaintext; 
} 
print_r($hometps); 


foreach (array_expression as $key => $value) 
    statement 

Les premières boucles de la forme sur le tableau array_expression. A chaque itération, la valeur de l'élément en cours est assignée à $ value et le pointeur interne du tableau est avancé de un (donc à l'itération suivante, vous regarderez l'élément suivant).

La seconde forme affectera en outre la clé de l'élément en cours à la variable $ key à chaque itération.

PHP.net:foreach