1

私はこの2つのアレイを持っています。

1つは標準のSELECTクエリを使用して生成され、もう1つは次のステートメントを使用して生成されます。

$file = file(DOC_ROOT."robots.txt");
foreach($file as $text) {
$test[] = $text;
}

次のような最初の配列出力:

Array
(
    [0] => Disallow: /admin/
    [1] => Disallow: /m/
    [2] => Disallow: /private/
)

このような他の:

Array
(
[4] => Disallow: /admin/

[5] => Disallow: /m/

[6] => Disallow: /private/

[7] => Disallow: /success.php
)

問題は、2つの配列をマージした後、array_uniqueが機能しないことです。おそらく、2番目の配列によって生成されたスペースが原因であると推測されます。これらを削除しようとしましたが、うまくいきませんでした。今私の質問は、これを引き起こすのは本当にスペースなのか、それとも私の流れに何か問題があるのか​​ということです。便宜上、ここに配列コードがありますが、それほど重要ではありません。この問題をどのように解決できますか?ありがとうございました。

$result = array_merge($lines,$test);
    $result = array_unique($result);
    echo '<pre>';
    echo print_r($result);
    echo '</pre>';

結果:

Array
(
[0] => Disallow: /admin/
[1] => Disallow: /m/
[2] => Disallow: /private/

[32] => 

[33] => Disallow: /admin/

[34] => Disallow: /m/

[35] => Disallow: /private/

[36] => Disallow: /success.php
)
4

1 に答える 1

1

array_unique()は、配列の値を処理します。あなたの例では、共通の値がないため、値が削除されることはありません。

そして、はいスペースはarray_uniqueに2つの異なる値を表示させるので、basicalylこれらの2つの値は同じではありません:

[0] => 'hello1   hello2'
[1] => 'hello1 hello2'

およびarray_uniqueは両方の値を残します

file()がandを保持するため、pre内のキーの間にそのスペースが\nあり\rます。だから:

file(,FILE_IGNORE_NEW_LINES);
于 2012-04-30T17:10:48.867 に答える