2017-08-03 6 views
2

もちろん、私の質問のタイトルはアイデアを与えませんが、訪問したリンクのスタイル(色)を探しています。file()関数に基づいてより多くの配列内の値を見つける方法

私は2つのデータベース、少しテキストファイルを持っている:

これは私からの読み取りどこで、その後、リンクを作成します。 (db_friends.txt)

0982|Chiara|chiaramella|543254 
7134|Paolo|pablo752|675474 
9564|Andrea|andry8239|39377874 
3122|Luca|luka7|26887543 
4456|Riccardo|riccard904|6832787645 
9721|Fabio|fab78|38307696 
3284|Francesco|frafra54|9325454 
9555|Luigi|lulu14|0055468 
1485|Matteo|matty990|897103464 
0986|Laura|lau3245|324891000 
3714|Claudio|cla235|36464820 
9986|Giovanni|giojo982|0005405 
8244|Stefano|stefy734|45367 
7731|Marco|markkkk998|355647689 
2123|Roberto|robn88|809678741 

この第二に、私は、保存場所です (visited.txt)

9564 
3284 
3714 
8244 

は今、私はこのforeachループで友人のリストをエコー::私がクリックしたリンクの値id

<?php 
$db_friends = file("db_friends.txt"); 
$db_visited = file("visited.txt"); 

foreach($db_friends as $key => $profile) { 
    list($uni_id, $name, $nick, $num_id) = explode("|", $profile); 
    if (in_array($uni_id, $db_visited)) { 
     $style = "style=\"color: red;\""; 
    } else { 
     $style = ""; 
    } 
    ?> 
    <div id="fr_slot"> 
     <a <?= $style; ?> href="./?alpha_id=<?= $nick; ?>&id=<?= $key ?>" target="_tab"><?= $name ?></a> 
    </div> 

<?php } ?> 

結果は、visited.txt内の一致したIDとは異なる色(赤色など)が得られるはずです。 この場合、アンドレア、フランチェスコ、クラウディオ、ステファノは赤色でなければなりませんが、私は何をしようとしているのか分かりません。 あなたのお役に立てば幸いです!どうもありがとう!

+0

実際にデータベースを使用していると考えていますか? '' SELECT 'friends''、' 'visited''''''''''''''''''''''''''''は' 'friends''''から' 'friends'''にアクセスしましたLEFT JOIN' 'visited'' USING(' 'id''''') –

+0

visite.txtの値を 'file()'または 'trim()'で 'FILE_IGNORE_NEW_LINES'を使う必要があるでしょう。 – AbraCadaver

答えて

2

あなたのコード。余分なことはありません。

2

fileのエントリの末尾に改行が残っているため、動作しません。おそらく、また、その$db_friendsで行う必要があります

$db_visited = array_map('trim',$db_visited); 

あなた$num_idがあまりにも改行を持っているので、それが後に問題が発生することがあります。あなたは簡単に行うことができ、trimにする必要があります。

しかし、真剣にMySQLなどの実際のデータベースを使用することを検討してください、あなたの人生ははるかに簡単になるでしょう。

$db_friends = file("db_friends.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
$db_visited = file("visited.txt",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

注: - - :それは自動的に新しいライン/空の行の問題の世話をするあなたは以下のようなfile()フラグ

FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES 

変更コードを使用する必要が

+0

私はデータベースの推奨に同意しませんが、私はそれがあなたのアプリケーションのサイズと意図に依存すると思います。 MySQLの起動はあまりにも多すぎるかもしれませんし、もしファイルのアプローチがうまくいくならそれで十分です。とにかくデータベースが必要な場合は、SQLiteも適切な勧告かもしれません。 – sidyll

+0

@sidyll真に、私はMySQLに「デフォルトするもの」として慣れてきたかもしれませんが、特にInnoDBは本当に私を魅了しました:D –

関連する問題