首页 > 解决方案 > 虽然循环它只打印我 1 个值,它是最后一个

问题描述

我正在尝试将我的数组打印为表格,但实际上它并没有真正在数组内部循环,它只打印我的最后一个值

<?php
$url='http://myurl.com/';
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
$html = curl_exec($curl);
;
$pro=array();
preg_match_all("/<td>[0-9]{1,3}(\.[0-9]{3})*.[0-9]+DA<\/td>",$html,$match);
$pro['prix']=$match['0'];

preg_match_all('!<td><a href=".*">\K(.+?(?=<\/a><\/td>))!',$html,$match);
$pro['nom']=$match['0'];
$currencies = array_combine($pro['nom'], array_chunk($pro['prix'], 2));

foreach ($currencies as $currency => list($sell, $buy)) {
    $output = ' <td data-th="currency">'.$currency.'</td> <td data-th="sellprice">'.$sell.'</td> <td data-th="buyprice">'.$buy.'</td> '; 
}
curl_close($curl);
?>
<table class="rwd-table">
    <tr>
        <th>Devises</th>
        <th>Achat</th>
        <th>Vente</th>
    </tr>
<?php echo $output ?>
</table>

我希望看到所有 11 个值,但我只看到一个,它是最后一个,当我执行 var_dump 时它显示得很好并且它正确打印了所有数组

**问题是我忘记了 $output 。= 并在开始时创建空的 $output ='' 感谢您的帮助!现在工作正常!**

标签: phparraysweb-scraping

解决方案


您需要连接您的$output变量,否则它只会显示最后一个变量,因为该变量会在循环的每次迭代中重新分配。

只需更改$output =$output .=

编辑:您应该在循环之前使用空字符串实例化变量,因为您无法连接到未声明的变量,并且会引发错误。$output ='';在循环开始之前添加


推荐阅读