在PHP中排序和显示数组的一部分

时间:2014-05-06 14:58:24

标签: php arrays sorting

我一直在网上和网上寻找解决我困境的解决方案大约一周,到目前为止,我所做的一切似乎都没有用。如果我提供太多代码作为示例,我会提前道歉!!!

这是我的数组片段:

$products = array(
1 => array(
'category' => 'Computer Science',
'title' => 'Programming PHP',
'author' => 'Lerdorf',
'publisher' => 'O\'Reilly',
'price' => 29.99,
'isbn' => '1412359370'
),
2 => array(
'category' => 'Computer Science',
'title' => 'CGI Programming',
'author' => 'Guelich',
'publisher' => 'O\'Reilly',
'price' => 39.99,
'isbn' => '1772355179'
),

我正在尝试拨打'类别'和作者'出于它,所以当用户点击"计算机科学"在页面上的书籍列表中,"编程PHP"和" CGI编程"如果他们点击作者的名字,只会出示他的书籍等,就会出现同样的事情......

我在页面中显示数组,方法是使用循环调用数组并显示表中的所有产品:

echo "<p>
    <a href='http://bctdigital.com/~student4/php/amazon_new.php'>AmaNot</a></p>";

echo "<h3>Our Products</h3>";

echo"<table style='width:500px;' cellspacing='0'>";
echo"<tr>
    <th style ='border-bottom:1px solid #000000;'>Title</th>
    <th style ='border-bottom:1px solid #000000;'>Price</th>
    <th style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_product=$category'>" . $product['category'] . "</a>Category</th>
    <th style ='border-bottom:1px solid #000000;'>Author</th>
</tr>";

// Loop to display all products - work on this links
foreach($products as $id => $product)
    {
    echo "<tr> 
    <td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_product=$id'>" . $product['title'] . "</a></td>
    <td style ='border-bottom:1px solid #000000;'>$" . $product['price'] . " </td> 
    <td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=$title'>" . $product['category'] . "</td>
    <td style ='border-bottom:1px solid #000000;'>" . $product['author'] . "</td>
    </tr>";
}
echo"</table>";
}

这似乎工作正常,但是,弄清楚如何调用数组的一部分并显示它是我遇到问题的地方。

附上网址,这样你就可以看到我正在构建的东西(它是一个学校项目),出于某种原因,我可以找出所有其他更复杂的部分,以及什么不是。似乎是最困难的是什么给了我最大的麻烦!去搞清楚! 如果还有其他需要展示的内容,请告诉我,我没有表现出来。我在代码片段中加入了我认为&#34;排序功能应该去。 http://bctdigital.com/~student4/php/amazon_new.php

4 个答案:

答案 0 :(得分:0)

要对阵列使用自定义排序,应使用usort功能。 对于类别排序,你最终会得到类似的东西:

usort($products, function cmp($a, $b) {
     if ($a['category'] == $b['category']) {
        return 0;

     return ($a['category'] < $b['category']) ? -1 : 1;
});

答案 1 :(得分:0)

我会使用超全局$_GET变量来确定类别。从那里开始,在循环遍历数组时将该变量用作条件测试。仅显示属于所选类别的结果。例如:

if (isset($_GET['view_category']) {
    //store the category (e.g. what comes after ?view_category= in the URL)
    $cat = $_GET['view_category'];

    //loop through and use only those entries which match the category that was clicked
    foreach ($products as $id => $product) {
        if ($product['category'] == $cat) {
            //display this entry and other details, etc.
        }
        else continue;
    }
}

查看您的网站,您需要在“类别”标题下添加您的链接,以便在?view_category=的另一侧添加其值,以便相应的条目显示在网址中,并可供{{1}使用}。

答案 2 :(得分:0)

您尚未在

之上的任何地方声明$ title
<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=$title'>" . $product['category'] . "</td>

我想,应该是

<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=".$product['category']."'>" . $product['category'] . "</td>

此外,您需要添加:

if(isset($_GET['view_category']) && $_GET['view_category']!=''){
 // here you have to pull data for the particular category and display it....
}

答案 3 :(得分:0)

有两种方法可以做到。

  1. GET
  2. 的Ajax
  3. GET是全局变量,因此您可以使用$ _GET。 为此,您的链接必须是<td style ='border-bottom:1px solid #000000;'><a href='http://bctdigital.com/~student4/php/amazon_new.php?view_category=".$product['category']."'>" . $product['category'] . "</td> 然后你可以访问变量$ _GET ['view_category']。 这适用于任何类别。

    使用ajax park你可以将类别作为param发送到你可以拥有这个逻辑的url

    $products = array(
    1 => array(
    'category' => 'Computer Science',
    'title' => 'Programming PHP',
    'author' => 'Lerdorf',
    'publisher' => 'O\'Reilly',
    'price' => 29.99,
    'isbn' => '1412359370'
    ),
    2 => array(
    'category' => 'Computer Science',
    'title' => 'CGI Programming',
    'author' => 'Guelich',
    'publisher' => 'O\'Reilly',
    'price' => 39.99,
    'isbn' => '1772355179'
    ));
    
    $category = $_GET['view_category'];
    foreach ($products as $prodArray){
    
        if($prodArray['category'] == $category){
    
                    //your display goes here
            echo "Title: " . $prodArray['title'] . "<br>";
            echo "Author: " . $prodArray['author'] . "<br>";
    
        }
    
    }