我正在将一些数据存储在一个数组中,如果标题已存在于数组中,我想将密钥添加到数组中。但由于某种原因,它没有添加标题的关键。
这是我的循环:
$data = [];
foreach ($urls as $key => $url) {
$local = [];
$html = file_get_contents($url);
$crawler = new Crawler($html);
$headers = $crawler->filter('h1.title');
$title = $headers->text();
$lowertitle = strtolower($title);
if (in_array($lowertitle, $local)) {
$lowertitle = $lowertitle.$key;
}
$local = [
'title' => $lowertitle,
];
$data[] = $local;
}
echo "<pre>";
var_dump($data);
echo "</pre>";
答案 0 :(得分:4)
你在这里找不到任何东西:
foreach ($urls as $key => $url) {
$local = [];
// $local does not change here...
// So here $local is an empty array
if (in_array($lowertitle, $local)) {
$lowertitle = $lowertitle.$key;
}
...
如果您想检查$data
数组中是否已存在标题,您可以选择以下几种方法:
$data
; $data
数组的键。这样您就可以轻松检查重复值。我会使用第二个选项或类似的东西。
一个简单的例子:
if (array_key_exists($lowertitle, $data)) {
$lowertitle = $lowertitle.$key;
}
...
$data[$lowertitle] = $local;