Kod çok boyutlu dizilerle nasıl çalışır?

Aşağıdaki kod var, PHP içeren içeriği aynı welcome.php sayfasına dinamik olarak görüntülemek için htaccess dosyamla çalışıyor. Bu, tüm sayfanın sadece bir kısmı. İlk kod bloğu, iki boyutlu dizilerle çalışan koddur. Bu kod dahil dosyaların yolunu bulur ve web sitesinin genel yapısını oluşturur.

$category   = $_GET['category'];
$page       = $_GET['page'];

function getUrl($category, $page) {
    $pages = array(
        'home',
        'design' => array('about', 'events', 'contact'),
        'community' => array('about', 'events', 'contact'),
        'philanthropy' => array('about', 'events', 'contact'),
        '404'
    );
    if (!is_null($category)) {
        if(array_key_exists($category, $pages) && in_array($page, $pages[$category])) {
            return $category . '/' . $category . '_' . $page;
        }
    } elseif (in_array($page, $pages) || array_key_exists($page, $pages)) {
        return 'content_' . $page;
    }
    return 'content_404';
}
$path = getUrl($category, $page);

Şu anda iki boyutlu diziler kullanıyorum, başka bir sayfa katmanı oluşturmak için üç boyutlu dizileri kullanabilmek istiyorum ve bunu çalışmasını sağlamakta zorlanıyorum ... işte şimdiye kadar denedim:

$category   = $_GET['category'];
$subcat     = $_GET['subcat'];
$page       = $_GET['page'];

function getUrl($category, $subcat, $page){
    $pages = array(
        'home',
        'design' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'community' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'philanthropy' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        '404'
    );

    if (!is_null($category)) {
        if(array_key_exists($category, $pages) && in_array($page, $pages[$category])) {
            return $category . '/' . $category . '_' . $page;
        }
    } elseif (in_array($page, $pages) || array_key_exists($page, $pages)) {
        return 'content_' . $page;
    }
    return 'content_404';
}
$path = getUrl($category, $subcat, $page);

Bu .htaccess dosyası olacaktır:

RewriteRule ^([a-zA-Z0-9]+)/?$ welcome.php?page=$1 [NC]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ welcome.php?category=$1&page=$2 [NC]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ welcome.php?category=$1&subcat=$2&page=$3 [L,NC]

Gideceğim site yapısı şöyle bir şey:

Home

Design
-- About
---- Services
---- Partners
-- Events
-- Contact

Community
-- About
---- Services
---- Partners
-- Events
-- Contact

Philanthropy
-- About
---- Services
---- Partners
-- Events
-- Contact

--------------------------

Example:
/design                = $page
/design/about          = $category/$page
/design/about/services = $category/$subcat/$page

Çok boyutlu diziler hâlâ alıştığım bir şey, bunun üç boyutlu dizilerle nasıl çalışacağını tam olarak bilmiyorum ... Temel olarak yapmaya çalıştığım kodun dizi ile çalışmasını sağlamak.

0
Bununla ne yapmaya çalışıyorsun? Sorunuzda bunu ana hatlarıyla belirtmeniz gerekir.
katma yazar Darren, kaynak
Bununla ne yapmaya çalışıyorsun? Sorunuzda bunu ana hatlarıyla belirtmeniz gerekir.
katma yazar Darren, kaynak

6 cevap

İşlevinizin üç boyutu destekleyen bir sürümü:

function getUrl($category, $page, $subpage){
    $pages = array(
        'home',
        'design' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'community' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'philanthropy' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        '404'
    );

    if (!is_null($category) && !is_null($subpage)) {
       //Handle subpage.
        if (array_key_exists($category, $pages) && array_key_exists($subpage, $pages[$category]) && in_array($page, $pages[$category][$subpage])) {
            return $category . '/' . $subpage . '/' . $category . '_' . $subpage . '_' . $page;
        }
    } elseif (!is_null($category)) {
       //Handle page.
        if (array_key_exists($category, $pages) && (in_array($page, $pages[$category]) || array_key_exists($page, $pages[$category]))) {
            return $category . '/' . $category . '_' . $page;
        }
    } elseif (in_array($page, $pages) || array_key_exists($page, $pages)) {
        return 'content_' . $page;
    }

    return 'content_404';
}

En zor kısım, her anahtarın var olduğundan ve $ alt sayfasının ve $ kategorisinin ayarlandığından emin olmak. İşlevin ne tür argümanlar beklediğinden emin değilim, ancak $ alt sayfasını null kontrol ettim.

1
katma
Bunun yarattığı şey şunun içinde olacak olan şey: include ('content /'. $ Path. '.Php'); Açıklamak için yukarıdaki koda bir düzenleme yaptım. biraz, öyleyse şöyle sonuçlanır: category/subcat/page - 'page' şu anda gösterilmekte olan içerik olacaktır
katma yazar Matthew, kaynak
evet efendim bu doğru!
katma yazar Matthew, kaynak
Beklettiğim için üzgünüm arkadaşım, şu ana kadar her şey yolunda gidiyor gibi görünüyor
katma yazar Matthew, kaynak
Kodu biraz yaptım, $ kategorisi belirlenmediyse, ancak $ alt sayfası ne olursa olsun $ sayfasına gidecekti, işte ne yaptım: sandbox.onlinephpfunctions.com/code/… - bunun daha iyi olacağını düşünürseniz =)
katma yazar Matthew, kaynak
@Matthew öyleyse eğer: /design/about/services/$ category/$ subpage/$ page öyleyse $ subpage "about" olarak mı ayarlanır?
katma yazar Anthony Calandra, kaynak

İşlevinizin üç boyutu destekleyen bir sürümü:

function getUrl($category, $page, $subpage){
    $pages = array(
        'home',
        'design' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'community' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'philanthropy' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        '404'
    );

    if (!is_null($category) && !is_null($subpage)) {
       //Handle subpage.
        if (array_key_exists($category, $pages) && array_key_exists($subpage, $pages[$category]) && in_array($page, $pages[$category][$subpage])) {
            return $category . '/' . $subpage . '/' . $category . '_' . $subpage . '_' . $page;
        }
    } elseif (!is_null($category)) {
       //Handle page.
        if (array_key_exists($category, $pages) && (in_array($page, $pages[$category]) || array_key_exists($page, $pages[$category]))) {
            return $category . '/' . $category . '_' . $page;
        }
    } elseif (in_array($page, $pages) || array_key_exists($page, $pages)) {
        return 'content_' . $page;
    }

    return 'content_404';
}

En zor kısım, her anahtarın var olduğundan ve $ alt sayfasının ve $ kategorisinin ayarlandığından emin olmak. İşlevin ne tür argümanlar beklediğinden emin değilim, ancak $ alt sayfasını null kontrol ettim.

1
katma
Bunun yarattığı şey şunun içinde olacak olan şey: include ('content /'. $ Path. '.Php'); Açıklamak için yukarıdaki koda bir düzenleme yaptım. biraz, öyleyse şöyle sonuçlanır: category/subcat/page - 'page' şu anda gösterilmekte olan içerik olacaktır
katma yazar Matthew, kaynak
evet efendim bu doğru!
katma yazar Matthew, kaynak
Beklettiğim için üzgünüm arkadaşım, şu ana kadar her şey yolunda gidiyor gibi görünüyor
katma yazar Matthew, kaynak
Kodu biraz yaptım, $ kategorisi belirlenmediyse, ancak $ alt sayfası ne olursa olsun $ sayfasına gidecekti, işte ne yaptım: sandbox.onlinephpfunctions.com/code/… - bunun daha iyi olacağını düşünürseniz =)
katma yazar Matthew, kaynak
@Matthew öyleyse eğer: /design/about/services/$ category/$ subpage/$ page öyleyse $ subpage "about" olarak mı ayarlanır?
katma yazar Anthony Calandra, kaynak

Umarım bu yardım

function getUrl($category = FALSE, $page = FALSE, $subpage = FALSE){

    $pages = array(
        'home',
        'design' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'community' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'philanthropy' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        '404'
    );

    if(!is_null($category) && !is_null($page) && !is_null($subpage)){//validate category, page and subpage

        foreach($pages as $keys=>$val){

            if(is_array($pages[$keys])){

                if($category == $keys && in_array($page, $pages[$keys])){

                    return $category . '/' . $category . '_' . $page;

                }

            }else {


            }

            if($keys == "design" && $category == "design"){


                    foreach($pages['design'] as $key=>$vall){

                        if($page == $key){

                            if(is_array($vall)){

                                if(in_array($subpage, $vall)){

                                    return $category . '/' . $category . '_' . $page . '/' . $subpage;

                                }

                            }else {

                                return $category . '/'. $page;

                            }
                        }

                    }

            }

        }

    }
    else if(!is_null($category) && !is_null($page)) {//validate category and page only

        if(array_key_exists($category, $pages) && in_array($page, $pages[$category])) {

            return $category . '/' . $category . '_' . $page;

        }

    }
    else if(!is_null($page)){//validate page only

        if (in_array($page, $pages) || array_key_exists($page, $pages)) {

            return 'content_' . $page;

        }

    }else {

       //no parameter set

    }

}

! is_null yerine! empty komutunu kullanmanızı tavsiye ederiz, çünkü '' parametresini ayarlarsanız true değerini döndürür

0
katma

Umarım bu yardım

function getUrl($category = FALSE, $page = FALSE, $subpage = FALSE){

    $pages = array(
        'home',
        'design' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'community' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        'philanthropy' => array(
            'about' => array('services', 'partners'), 
            'events', 
            'contact'
        ),
        '404'
    );

    if(!is_null($category) && !is_null($page) && !is_null($subpage)){//validate category, page and subpage

        foreach($pages as $keys=>$val){

            if(is_array($pages[$keys])){

                if($category == $keys && in_array($page, $pages[$keys])){

                    return $category . '/' . $category . '_' . $page;

                }

            }else {


            }

            if($keys == "design" && $category == "design"){


                    foreach($pages['design'] as $key=>$vall){

                        if($page == $key){

                            if(is_array($vall)){

                                if(in_array($subpage, $vall)){

                                    return $category . '/' . $category . '_' . $page . '/' . $subpage;

                                }

                            }else {

                                return $category . '/'. $page;

                            }
                        }

                    }

            }

        }

    }
    else if(!is_null($category) && !is_null($page)) {//validate category and page only

        if(array_key_exists($category, $pages) && in_array($page, $pages[$category])) {

            return $category . '/' . $category . '_' . $page;

        }

    }
    else if(!is_null($page)){//validate page only

        if (in_array($page, $pages) || array_key_exists($page, $pages)) {

            return 'content_' . $page;

        }

    }else {

       //no parameter set

    }

}

! is_null yerine! empty komutunu kullanmanızı tavsiye ederiz, çünkü '' parametresini ayarlarsanız true değerini döndürür

0
katma

İlk önce sayfanın varlığını kontrol etmelisiniz.

Diyelim ki bu sen dizisin

$pages = array(
    'home',
    'design' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    'community' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    'philanthropy' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    '404'
);

Sonra sayfanın varlığını kontrol et

if(in_array($page, $pages)){
    /* Page found here we have to check the structure of this page. */
    if(is_array($pages[$page])){
        if(in_array($category, $pages[$page])){
            /* Category found here we have to check the structure of this category. */
            if(is_array($pages[$page][$category])){
                if(in_array($subpage, $pages[$page][$category])){
                    /* Sub Page found return it. */
                    return $category . '/' . $subpage . '/' . $category . '_' . $subpage . '_' . $page;
                }
            }

            /* All done we don't have more items in the list. */
            return $category . '/' . $category . '_' . $page;                
        }

    }

    /* All done we don't have more items in the list. */
    return 'content_' . $page;
}else{
    /* Page not found */
    return 'content_404';
}
0
katma

İlk önce sayfanın varlığını kontrol etmelisiniz.

Diyelim ki bu sen dizisin

$pages = array(
    'home',
    'design' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    'community' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    'philanthropy' => array(
        'about' => array('services', 'partners'), 
        'events', 
        'contact'
    ),
    '404'
);

Sonra sayfanın varlığını kontrol et

if(in_array($page, $pages)){
    /* Page found here we have to check the structure of this page. */
    if(is_array($pages[$page])){
        if(in_array($category, $pages[$page])){
            /* Category found here we have to check the structure of this category. */
            if(is_array($pages[$page][$category])){
                if(in_array($subpage, $pages[$page][$category])){
                    /* Sub Page found return it. */
                    return $category . '/' . $subpage . '/' . $category . '_' . $subpage . '_' . $page;
                }
            }

            /* All done we don't have more items in the list. */
            return $category . '/' . $category . '_' . $page;                
        }

    }

    /* All done we don't have more items in the list. */
    return 'content_' . $page;
}else{
    /* Page not found */
    return 'content_404';
}
0
katma