2 人のユーザーの本のライブラリを比較しようとしています。別のユーザーのライブラリを表示しています。現在のユーザーが自分のライブラリにもその本を持っている場合は、その本の下に「Ping」へのリンクを表示したいと思います。関連するコントローラーコードは次のとおりです。
function other_user_library()
{
$this->load->model('user_library_model');
$this->load->model('user_information_model');
$data['other_user_library']=$this->user_library_model->other_user_library($username);
$data['my_book']=$this->user_library_model->compare_libraries();
$this->load->view('other_user_library', $data);
}
モデルは次のとおりです。
function other_user_library($username)
{
$this->load->database();
$this->db->select('*');
//rest of query to display all of other user's books
$query= $this->db->get();
return $query->result();
}
function compare_libraries()
{
$this->load->database();
$this->db->select('BOOK.isbn');
//rest of query to return the current user's list of isbns in his library
$query= $this->db->get();
return $query->result();
}
関連する View コードは次のとおりです。
<?php foreach ($other_user_library as $row) :?>
<?php if($row->isbn)
{
foreach ($my_book as $thing):
if($thing->isbn ==$row->isbn)
{
$ping = TRUE;
if($ping)
{
echo anchor('Ping');
}
}
else
{
echo "somethingelse";
}
endforeach;
}?>
<?php endforeach;?>
現状では、8 冊の本を持っているユーザーの場合、そのうちの 1 冊が他のユーザーのライブラリの本と一致する場合、これは "somethingelse" を 7 回表示し、次に "Ping" リンクを 1 回表示します。8つのisbnを通過し、そのうちの1つが一致することを確認してから、「Ping」リンクを表示するだけの方法があるかどうか疑問に思っています。else{echo "somethingelse";} 行を削除してみました。そして、一致する本の「Ping」だけが表示されます。ただし、空白のままにするのではなく、一致しない本の下に何か他のものを配置できるようにしたいと考えています。ありがとうございました!