PHP dizileri ile oynamak

1 Cevap php

Şu anda ben birden çok diğer diziler kadar yapılmış tek bir dizi yani var:

-- Category
    -- Subcategory
        -- Name
        -- Count
    -- Subcategory
        -- Name
        -- Count
    -- Subcategory
        -- Name
        -- Count
-- Category
    -- Subcategory
        -- Name
        -- Count
    -- Subcategory
        -- Name
        -- Count

Her altında 30 alt kategoriye - Bu yaklaşık 60 kategoride ve yaklaşık 10 için devam ediyor.

I want to display the categories & subcategories on a PHP/HTML page in a column format. My understanding so far would be that I need to divide the total amount of categories by the columns required and then possibly use array_slice or array_splice to display the categories for each column.

Yani sütunun başına kategorilerinin miktarı için formül gibi bir şey olurdu:

$categoriesPerColumn = ceil($TotalNumberOfCategories / $numberOfColumns);

Ayırmak için ben css biçimlendirme ile <div> etiketlerini kullanarak demek sütunlarını kullanarak sütunlar yani:

 -----------------------------------------------------------------------------
|           First Category                 |            Third Category        |
|   - Subcategory 1 (Count)                |     - Subcategory 1              |
|   - Subcategory 2 (Count)                |     - Subcategory 2              |
|   - Subcategory 3 (Count)                |            Fourth Category       |
|   - Subcategory 4 (Count)                |     - Subcategory 1              |
|           Second Category                |            Fifth Category        |
|   - Subcategory 1 (Count)                |     - Subcategory 1              |
|   - Subcategory 2 (Count)                |     - Subcategory 2              |
|   - Subcategory 3 (Count)                |     - Subcategory 3              |
|   - Subcategory 4 (Count)                |     - Subcategory 4              |
|                                          |     - Subcategory 5              |
 -----------------------------------------------------------------------------

Sorular:

  1. Bu yüzden yapmanın doğru yolu nedir?
  2. Bu nasıl PHP yapılabilir?

1 Cevap

Ben tamamen sen soruyorsun ne anlamıyorum, ben vahşi bir bıçak alıp, aşağıdaki gibi bir şey ile gitmek için gidiyorum:

EDIT: sütun ağırlıkları ile, sütunlar nispeten aynı uzunlukta çıkacaktır böylece:

$categories = array(
    "First Category" => array(
        array("name" => "First subcategory", /* etc */),
        array("name" => "Second subcategory", /* etc */),
        array("name" => "Third subcategory", /* etc */),
    ),
    "Second Category" => array(
        array("name" => "First subcategory", /* etc */),
        array("name" => "Second subcategory", /* etc */),
    ),
    "Third Category" => array(
        array("name" => "First subcategory", /* etc */),
        array("name" => "Second subcategory", /* etc */),
    ),
);

// Setup the preprocessing.
$numColumns = 2;
$columnLength = array();
$columnData = array();
for ($i = 0; $i <= $numColumns; $i++) 
{ $columnLength[] = 0; $columnData[] = ''; }

// Sort the category array
ksort($categories);

// Process our data
foreach ($categories as $cname => $subcats) {
    $minLength = $columnLength[0];
    $minIndex = 0;
    for ($i = 1; $i < $numColumns; $i++) {
        if ($columnLength[$i] < $minLength) {
            $minLength = $columnLength[$i];
            $minIndex = $i;
        }
    }

    $columnLength[$minIndex] += 1 + count($subcat);
    $columnData[$minIndex] .= '<center style="text-size:1.1em">'.$cname.'</center><br/>';
    foreach($subcats as $subcat) {
        $columnData[$minIndex] .= '- '.$subcat['name'].'<br/>';
    }
}

// Display our data
for ($i = 0; $i < $numColumns; $i++) {
    echo '<div class="column'.($i+1).'">'.$columnData[$i]."</div>\n";
}