簡體   English   中英

PHP數組結構,簡化理解

[英]PHP array structure, simplify for understanding

我有大量的下一個元素:

array(
    array('url' => 'http://someurl.com', 'param' => array(false,true,true,true)), 
    array(...),
    array(...),
    ...
)

“布爾”值表示某些參數(noindex,頁眉,頁腳,側邊欄)。

我需要修改此數組以更好地理解(某些用戶無法理解“布爾”值的含義)。

我可以這樣添加參數名稱:

array(
    array(
         'url' => 'http://someurl.com', 
         'param' => array(
                         'noindex' => false, 
                         'header' => true,
                         'footer' => true,
                         'sidebar' => true
                    )
    ), 
    array(...),
    array(...),
    ...
)

但是此方法增加了數組大小。

如何簡化數組?

謝謝!

沒有付出代價,就沒有辦法修改理解。

唯一的方法是為數組添加注釋。

array(
    array(
         'url' => 'http://someurl.com', 
         'param' => array(
                          false, //noindex
                          true,//header
                    )
    ), 
    array(...),
    array(...),
    ...
)

但是,如果數組的所有元素都相同,則可以執行此操作。

array(
'url' => array('url1','url2',...),
'param'=>array(
    'noindex'=>array(true,false,...),
    'header'=>array(true,false,...)
));

我認為減少內存使用不是太重要。 因為如果您不分配索引,PHP會自動添加索引。 帶有字符串或整數的數組之間沒有太大差異。

我認為您可以擁有第二個代碼而沒有任何問題。

如果您要簡化數組,可以使用關聯數組。 但是,這種方法僅在url具有唯一值時才適用:

$tArray = array($tUrl1 =>array(
         'param' => array(
                         'noindex' => false, 
                         'header' => true,
                         'footer' => true,
                         'sidebar' => true
                    )
    ),
    $tUrl2 =>array(
         'param' => array(
                         'noindex' => false, 
                         'header' => true,
                         'footer' => true,
                         'sidebar' => true
                    )
    )
) 

使用此方法的優點是易於調用嵌套值(如param)。

$tArray[$tUrl1]['param'];

我發現的最佳解決方案是使用類常量和按位運算符。

// Here we declare constants
const NOINDEX =     0b00000001,
      HEADER =      0b00000010,
      FOOTER =      0b00000100,
      SIDEBAR =     0b00001000;

// Here is array that I can understand without comparing boolean values with documentation
$urls = array(
        array('url' => 'http://someurl.com/', 'param' => self::NOINDEX | self::HEADER | self::FOOTER),
        array('url' => 'http://somesecondurl.me/blogs', 'param' => self::HEADER | self::FOOTER | self::SIDEBAR), 
        ...

//And of course using it
 $param = $urls[i]['param'];

 if ($param & self::HEADER) // Means that url have param HEADER
 if ($param & self::FOOTER) ...
 if ($param & self::SIDEBAR) ...

暫無
暫無

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

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