2016-03-25 3 views
2

Я храню некоторые данные в массиве, и я хочу добавить к нему ключ, если заголовок уже существует в массиве. Но по какой-то причине он не добавляет ключ к названию.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>"; 
+0

http://php.net/manual/en/function.error-reporting.php –

+0

@ Fred-II- Я попытался установить 'error_reporting (-1) ; но я не получаю никаких ошибок –

ответ

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 массиве, у вас есть несколько вариантов:

  • Вы перебираете весь массив или используете функцию фильтра массива, чтобы узнать, существует ли заголовок exis ts в $data;
  • Вы используете заголовок нижнего регистра как ключ для своего массива $data. Таким образом, вы можете легко проверить наличие повторяющихся значений.

Я бы использовал второй вариант или что-то похожее на него.

Простой пример:

if (array_key_exists($lowertitle, $data)) { 
    $lowertitle = $lowertitle.$key; 
} 
... 
$data[$lowertitle] = $local; 
+0

Я пробовал то же самое, если с массивом $ data, но все равно ничего не происходит:/ –

+0

@FrankLucas. Массив '$ data' - это многомерный массив, поэтому вы не можете использовать' in_array' like что искать строку. – jeroen

+0

oh okay Я понимаю, почему вы делаете это '$ data [$ lowertitle] = $ local;' –

Смежные вопросы