2016-03-25 8 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

@フレッド-II-:

簡単な例; 'しかし、何もエラーはありません –

答えて

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配列に存在するかどうかを確認したい場合は、いくつかのオプションがあります。

  • 配列全体をループするか、または配列フィルタ関数を使用して、タイトルが存在するかどうかを確認しますts in $data;
  • $dataアレイのキーとして、小文字のタイトルを使用します。そうすれば、重複した値を簡単にチェックできます。

私は2番目のオプションなどを使用します。私は `のerror_reportingを(-1)を設定しようとしました

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

$ data配列では同じことを試みましたが、何も起こりません:/ –

+0

@FrankLucas' $ data'配列は多次元配列なので、 'in_array'を使うことはできませんそれは文字列を探すことです。 – jeroen

+0

オハイオ州オハイオ州オハイオ州私はなぜあなたがこの '$ data [$ lowertitle] = $ local;'を行うのかを見ます –

関連する問題