[英]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.