从两个数组的每个循环嵌套,其中第一个循环的行向下一个循环发出信号

时间:2018-07-12 19:57:39

标签: php arrays

我的主要目标是在php / css / javascript中创建一个可折叠的表(我想我已经对它进行了排序),但是对于如何在另一个内部运行for each循环(也许是{ {1}}循环吗?),以便它脱离第二个循环。基本上,我在一个数组中有数据,并且可以使用第一个数组中的值之一从第二个数组中具有相同值的行中获取值。像这样的东西

while

我的第一个数组具有基本信息;

Category 1
 - Book Name 1 - Author 3 - Date 1
 - Book Name 2 - Author 3 - Date 3
 - Book Name 4 - Author 2 - Date 4
 - Book Name 7 - Author 2 - Date 3
Category 2
 - Book Name 3 - Author 1 - Date 2
 - Book Name 5 - Author 3 - Date 1
 - Book Name 8 - Author 1 - Date 5
 - Book Name 9 - Author 5 - Date 1

第二个数组中的行设置如下:

([0] => Array [Category]=>Category 1 [subscribers]=>13 [reads]=>4)
([1] => Array [Category]=>Category 2 [subscribers]=>13 [reads]=>4)

我可以调用的常见因素是类别,因此,如果我在第一个while循环中将其设置为变量,这种方法行得通吗?

([0] => Array [Category]=>Category 1 [Name]=>Book Name 1 [Author]=>Author 3[Date]=>Date 1)
([1] => Array [Category]=>Category 1 [Name]=>Book Name 2 [Author]=>Author 3[Date]=>Date 3)
([3] => Array [Category]=>Category 2 [Name]=>Book Name 3 [Author]=>Author 1[Date]=>Date 2)
etc...

FWIW 我尝试使我的问题尽可能通用,以便其他人可以更轻松地适应他们的代码。

1 个答案:

答案 0 :(得分:1)

使用foreach循环,而不是while

echo "<ul>";
foreach ($array1 as $item1) {
    $category = $item1['Category'];
    echo "<li>$category<ul>";
    foreach ($array2 as $item2) {
        if ($item2['Category'] == $category) {
            echo "<li>{$item2['Name']} - {$item2['Author']} - {$item2['Date']}</li>";
        }
    }
    echo "</ul></li>";
}
echo "</ul>";