2017-02-17 17 views
1

У меня есть список файлов PDF, которые классифицируются в списки.Петля внутри цикла, отображающая неверные данные

Как это:

Terms: 
PDF1.pdf 
PDF2.pdf 

Conditions: 
PDF1.pdf 
PDF3.pdf 

Так я первый петельный все категории, чтобы показать название категорий на моей странице, и в этом цикле я петельной в PDF-файл URL (только для целей тестирования, окончательным код получит метки привязки и т. д.).

Проблема в том, что мой код показывает все файлы PDF во всех заголовках. Не только файлы PDF, принадлежащие им. Что я делаю не так? Нужно ли мне опорожнять $attach после каждого цикла?

Мой код:

foreach($manualcr as $mantitle){ 
    if($mantitle['id'] != ''){ 
    $attachoverzicht .= '<h3>'.$mantitle['title'].'</h3>'; 
    foreach($manucr as $attach){ 
     if($attach['id'] != ''){ 
     $attachoverzicht .= '<li>'.$attach['url'].'</li>'; 
     } 
    } 
    } 
} 
echo $attachoverzicht; 

$manualcr содержит все названия категорий и manucr содержит все данные в формате PDF.

Значение переменной свалка результат $manualcr здесь

array(3) { 
    [0]=> 
    array(30) { 
    ["id"]=> 
    string(3) "182" 
    ["asset_id"]=> 
    string(3) "299" 
    ["title"]=> 
    string(18) "Terms & Conditions" 
    ["alias"]=> 
    string(16) "terms-conditions" 
    ["introtext"]=> 
    string(0) "" 
    ["fulltext"]=> 
    string(0) "" 
    ["state"]=> 
    string(1) "1" 
    ["catid"]=> 
    string(2) "42" 
    ["created"]=> 
    string(19) "2017-02-16 13:54:45" 
    ["created_by"]=> 
    string(3) "360" 
    ["created_by_alias"]=> 
    string(0) "" 
    ["modified"]=> 
    string(19) "2017-02-16 13:56:43" 
    ["modified_by"]=> 
    string(3) "360" 
    ["checked_out"]=> 
    string(1) "0" 
    ["checked_out_time"]=> 
    string(19) "0000-00-00 00:00:00" 
    ["publish_up"]=> 
    string(19) "2017-02-16 13:54:45" 
    ["publish_down"]=> 
    string(19) "0000-00-00 00:00:00" 
    ["images"]=> 
    string(173) "{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}" 
    ["urls"]=> 
    string(121) "{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}" 
    ["attribs"]=> 
    string(593) "{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}" 
    ["version"]=> 
    string(1) "2" 
    ["ordering"]=> 
    string(1) "0" 
    ["metakey"]=> 
    string(0) "" 
    ["metadesc"]=> 
    string(0) "" 
    ["access"]=> 
    string(1) "1" 
    ["hits"]=> 
    string(1) "0" 
    ["metadata"]=> 
    string(53) "{"robots":"","author":"","rights":"","xreference":""}" 
    ["featured"]=> 
    string(1) "0" 
    ["language"]=> 
    string(1) "*" 
    ["xreference"]=> 
    string(0) "" 
    } 
    [1]=> 
    array(30) { 
    ["id"]=> 
    string(3) "181" 
    ["asset_id"]=> 
    string(3) "298" 
    ["title"]=> 
    string(8) "Shackles" 
    ["alias"]=> 
    string(8) "shackles" 
    ["introtext"]=> 
    string(0) "" 
    ["fulltext"]=> 
    string(0) "" 
    ["state"]=> 
    string(1) "1" 
    ["catid"]=> 
    string(2) "42" 
    ["created"]=> 
    string(19) "2017-02-16 13:54:31" 
    ["created_by"]=> 
    string(3) "360" 
    ["created_by_alias"]=> 
    string(0) "" 
    ["modified"]=> 
    string(19) "2017-02-16 13:57:00" 
    ["modified_by"]=> 
    string(3) "360" 
    ["checked_out"]=> 
    string(1) "0" 
    ["checked_out_time"]=> 
    string(19) "0000-00-00 00:00:00" 
    ["publish_up"]=> 
    string(19) "2017-02-16 13:54:31" 
    ["publish_down"]=> 
    string(19) "0000-00-00 00:00:00" 
    ["images"]=> 
    string(173) "{"image_intro":"","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}" 
    ["urls"]=> 
    string(121) "{"urla":false,"urlatext":"","targeta":"","urlb":false,"urlbtext":"","targetb":"","urlc":false,"urlctext":"","targetc":""}" 
    ["attribs"]=> 
    string(593) "{"show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_vote":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_layout":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}" 
    ["version"]=> 
    string(1) "2" 
    ["ordering"]=> 
    string(1) "1" 
    ["metakey"]=> 
    string(0) "" 
    ["metadesc"]=> 
    string(0) "" 
    ["access"]=> 
    string(1) "1" 
    ["hits"]=> 
    string(1) "0" 
    ["metadata"]=> 
    string(53) "{"robots":"","author":"","rights":"","xreference":""}" 
    ["featured"]=> 
    string(1) "0" 
    ["language"]=> 
    string(1) "*" 
    ["xreference"]=> 
    string(0) "" 
    } 
    [2]=> 
    NULL 
} 

и результат $manucr

array(4) { 
    [0]=> 
    array(26) { 
    ["id"]=> 
    string(1) "1" 
    ["filename"]=> 
    string(13) "dummy_pdf.pdf" 
    ["filename_sys"]=> 
    string(71) "/home/website/public_html/cms/attachments/article/182/dummy_pdf.pdf" 
    ["file_type"]=> 
    string(15) "application/pdf" 
    ["file_size"]=> 
    string(5) "16555" 
    ["url"]=> 
    string(37) "attachments/article/182/dummy_pdf.pdf" 
    ["uri_type"]=> 
    string(4) "file" 
    ["url_valid"]=> 
    string(1) "0" 
    ["url_relative"]=> 
    string(1) "0" 
    ["url_verify"]=> 
    string(1) "0" 
    ["display_name"]=> 
    string(9) "Test naam" 
    ["description"]=> 
    string(0) "" 
    ["icon_filename"]=> 
    string(7) "pdf.gif" 
    ["access"]=> 
    string(1) "2" 
    ["state"]=> 
    string(1) "0" 
    ["user_field_1"]=> 
    string(0) "" 
    ["user_field_2"]=> 
    string(0) "" 
    ["user_field_3"]=> 
    string(0) "" 
    ["parent_type"]=> 
    string(11) "com_content" 
    ["parent_entity"]=> 
    string(7) "article" 
    ["parent_id"]=> 
    string(3) "182" 
    ["created"]=> 
    string(19) "2017-02-16 13:56:03" 
    ["created_by"]=> 
    string(3) "360" 
    ["modified"]=> 
    string(19) "2017-02-16 13:56:03" 
    ["modified_by"]=> 
    string(3) "360" 
    ["download_count"]=> 
    string(1) "0" 
    } 
    [1]=> 
    array(26) { 
    ["id"]=> 
    string(1) "2" 
    ["filename"]=> 
    string(14) "dummy_pdf1.pdf" 
    ["filename_sys"]=> 
    string(72) "/home/website/public_html/cms/attachments/article/182/dummy_pdf1.pdf" 
    ["file_type"]=> 
    string(15) "application/pdf" 
    ["file_size"]=> 
    string(5) "16555" 
    ["url"]=> 
    string(38) "attachments/article/182/dummy_pdf1.pdf" 
    ["uri_type"]=> 
    string(4) "file" 
    ["url_valid"]=> 
    string(1) "0" 
    ["url_relative"]=> 
    string(1) "0" 
    ["url_verify"]=> 
    string(1) "0" 
    ["display_name"]=> 
    string(0) "" 
    ["description"]=> 
    string(0) "" 
    ["icon_filename"]=> 
    string(7) "pdf.gif" 
    ["access"]=> 
    string(1) "2" 
    ["state"]=> 
    string(1) "0" 
    ["user_field_1"]=> 
    string(0) "" 
    ["user_field_2"]=> 
    string(0) "" 
    ["user_field_3"]=> 
    string(0) "" 
    ["parent_type"]=> 
    string(11) "com_content" 
    ["parent_entity"]=> 
    string(7) "article" 
    ["parent_id"]=> 
    string(3) "182" 
    ["created"]=> 
    string(19) "2017-02-16 13:56:39" 
    ["created_by"]=> 
    string(3) "360" 
    ["modified"]=> 
    string(19) "2017-02-16 13:56:39" 
    ["modified_by"]=> 
    string(3) "360" 
    ["download_count"]=> 
    string(1) "0" 
    } 
    [2]=> 
    array(26) { 
    ["id"]=> 
    string(1) "3" 
    ["filename"]=> 
    string(13) "dummy_pdf.pdf" 
    ["filename_sys"]=> 
    string(71) "/home/website/public_html/cms/attachments/article/181/dummy_pdf.pdf" 
    ["file_type"]=> 
    string(15) "application/pdf" 
    ["file_size"]=> 
    string(5) "16555" 
    ["url"]=> 
    string(37) "attachments/article/181/dummy_pdf.pdf" 
    ["uri_type"]=> 
    string(4) "file" 
    ["url_valid"]=> 
    string(1) "0" 
    ["url_relative"]=> 
    string(1) "0" 
    ["url_verify"]=> 
    string(1) "0" 
    ["display_name"]=> 
    string(0) "" 
    ["description"]=> 
    string(0) "" 
    ["icon_filename"]=> 
    string(7) "pdf.gif" 
    ["access"]=> 
    string(1) "2" 
    ["state"]=> 
    string(1) "0" 
    ["user_field_1"]=> 
    string(0) "" 
    ["user_field_2"]=> 
    string(0) "" 
    ["user_field_3"]=> 
    string(0) "" 
    ["parent_type"]=> 
    string(11) "com_content" 
    ["parent_entity"]=> 
    string(7) "article" 
    ["parent_id"]=> 
    string(3) "181" 
    ["created"]=> 
    string(19) "2017-02-16 13:56:55" 
    ["created_by"]=> 
    string(3) "360" 
    ["modified"]=> 
    string(19) "2017-02-16 13:56:55" 
    ["modified_by"]=> 
    string(3) "360" 
    ["download_count"]=> 
    string(1) "0" 
    } 
    [3]=> 
    NULL 
} 
+0

Не могли бы вы показать выход 'var_dump ($ manualcr);' и 'var_dump ($ manucr)'? Кажется, вы не проверяете состояние, в котором ваша категория '$ manucr' такая же, как ваша' $ manualcr'. – roberto06

+0

Да, я добавлю их на свой вопрос. @ roberto06 – twan

+0

Могли бы вы хотя бы изменить вызов доступа к базе данных на 'mysqli_fetch_assoc()' или если PDO выбрали с помощью 'PDO :: FETCH_ASSOC', так что массив содержит только ОДИН случайность каждого столбца. Это также снизит использование памяти для ваших кодов – RiggsFolly

ответ

3

Из ваших var_dump выходов, я предполагаю, что ваши соответствующие поля $mantitle['id'] и $attach['parent_id'].

Вы должны проверить это в вашем втором цикле, как таковой:

foreach($manualcr as $mantitle){ 
    if($mantitle['id'] != ''){ 
    $attachoverzicht .= '<h3>'.$mantitle['title'].'</h3>'; 
    foreach($manucr as $attach){ 
     if($attach['id'] != '' && $attach['parent_id'] == $mantitle['id']){ // Check for condition added here 
     $attachoverzicht .= '<li>'.$attach['url'].'</li>'; 
     } 
    } 
    } 
} 
echo $attachoverzicht; 
+0

Спасибо, имеет смысл. – twan