如果字符串已经存在,PHP重命名字符串

时间:2016-03-25 13:14:38

标签: php

我正在将一些数据存储在一个数组中,如果标题已存在于数组中,我想将密钥添加到数组中。但由于某种原因,它没有添加标题的关键。

这是我的循环:

$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>";

1 个答案:

答案 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;