簡體   English   中英

if語句和函數參數

[英]if statements and function arguments

我必須填寫一個函數,而我看到的唯一方法就是一團糟。 我具有的功能是:

public function($keys = array(), $pages = array()){}

本質上,目標是:

  • 如果鍵是一個數組,並且設置每個鍵,請執行某些操作。
  • 如果Key不是數組且未設置,請執行某些操作。

頁面也采用相同的概念。

所以這是四個if語句,那么我們這樣做:

如果key是array但頁面不是,如果pages是array但key不是。 如果兩者都是數組...

到目前為止,我有:

public function sidebar($keys = array(), $pages = array()){
    $builder = AisisCore_Factory_Pattern::create('AisisCore_Template_Builder');

    if(is_array($keys)){
        foreach($keys as $key){
            if(!$builder->get_specific_option($key)){
                get_sidebar();
            }
        }
    }else{
        if(!$builder->get_specific_option($keys)){
            get_sidebar();
        }
    }

    if(is_array($pages)){
        foreach($pages as $page){
            if(!$page){
                get_sidebar();
            }
        }
    }else{
        if(!$pages){
            get_sidebar();
        }
    }

}

您會看到它很快變得一團糟。 get_specific_option將檢查該鍵是否存在。 數組的完成方式如下: array('key', 'secondKey')等。 頁面是這樣完成的: array(is_page(), is_category()) -每個頁面都返回true或false,因此進行布爾檢查。 例如,如果未設置鍵或頁面不等於true,則get_sidebar()將獲取側邊欄。

我不確定如何創建此功能而不會造成災難。 可以幫忙嗎?

您可以通過始終轉換為數組來消除很多復雜性(快速單線)

$keys = is_array($keys) ? $keys : ($keys ? array($keys) : array());
$pages = is_array($pages) ? $pages : ($pages ? array($pages) : array());

現在的功能:

public function sidebar($keys = array(), $pages = array()){
    $builder = AisisCore_Factory_Pattern::create('AisisCore_Template_Builder');
    $keys = is_array($keys) ? $keys : ($keys ? array($keys) : array());
    $pages = is_array($pages) ? $pages : ($pages ? array($pages) : array());

    foreach ($keys as $key) {
        if (!$builder->get_specific_option($key)) {
            get_sidebar();
        }
    }

    foreach ($pages as $page) {
        if (!$page) {
            get_sidebar();
        }
    }
}

似乎有很多潛在的側邊欄包含物。 只是說。 但是,您可以為兩個參數中的任何一個傳遞NULL ,並且它根本不會運行foreach內容。

如果選項是可選的,則可以將值提供為null,例如:

public function sidebar($keys = NULL, $pages = NULL){
  //Do something here
}

可能對您有用;

<?php
    $search_array = array(
              'first' => 1, 
              'second' => 4);
    if (array_key_exists('first', $search_array)) {
         echo "The 'first' element is in the array";
    }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM