2017-10-07 44 views
-1

我想知道如何解析以下陣列,它產生的CSS,這裏的數組:生成ARRAY CSS

$css = array(
     '.item-image|text-align' => 'center', 
     '.item-image|vertical-align' => 'middle', 
     '.item-image img.single_image|width' => '300px' 
    ); 

通過以上陣列,我需要得到這樣的結果:

.item-image { 
    text-align: center; 
    vertical-align: middle; 
} 

.item-image img.single_image { 
    width: 300px; 
} 

如您所見,CSS類和CSS屬性之間用分隔|,也是第一和第二陣列是具有相同的密鑰,所以它應該合併文本排列在相同的標記垂直對齊(在.item圖像類)。

謝謝,我真的很感激任何幫助:)

+0

你嘗試過什麼嗎?如果是這樣,請將其包含在問題中。如果沒有,就這樣做!這是更有意義的(你會學到更多)來自己嘗試。先弄錯它不會造成任何傷害:)。 – ishegg

+0

@ishegg:謝謝,我也會嘗試 –

回答

0

我承擔它。
製作一個新的數組,並遍歷它並輸出鍵和值。
新的數組將是一個更「簡單的多維數組」。

$css = array(
    '.item-image|text-align' => 'center', 
    '.item-image|vertical-align' => 'middle', 
    '.item-image img.single_image|width' => '300px' 
); 

$new = array(); 

Foreach($css as $key => $val){ 
    $parts = explode("|", $key); 
    If(!isset($new[$parts[0]])) $new[$parts[0]] = array(); 

    $new[$parts[0]][$parts[1]] = $val; 
} 

//Var_dump($new); 

Foreach($new as $key => $subarray){ 
    Echo $key ."{\n"; 
    Foreach($subarray as $key2 => $val){ 
     Echo $key2 . ": " .$val .";\n"; 
    } 
    Echo "}\n"; 
} 

https://3v4l.org/niLPi

+0

你錯過了每個屬性末尾的分號。 – ishegg

+0

@ishegg是的,你是對的:) –

+0

@ishegg謝謝! :-) – Andreas

0

我將爲您提供小提示解決您的問題。我不說了做一個最好的辦法。但它可以幫助你

<?php 
$css = array(
     '.item-image|text-align' => 'center', 
     '.item-image|vertical-align' => 'middle', 
     '.item-image img.single_image|width' => '300px' 
    ); 

    foreach($css as $key=>$val){ 

     $response=explode('|',$key); 

     echo $response[0].' {'.$response[1].':'.$val.'}'; 

    } 

輸出將

.item-image {text-align:center} 
.item-image {vertical-align:middle} 
.item-image img.single_image {width:300px} 

它不是完全仍然完成你要檢查如果key已經存在,那麼你需要更新你的CSS媒體資源相關聯想你可能有.item-image有多個時間排列

0

有很多方法來解決這個問題:使用for,一個foreachwhile或陣列功能,並且它可能會增長到包括multidimensionals陣列或更多的東西。

您已經有forforeach回答以前的答案和while將幾乎相同。

所以,我給你使用array_walk

$css = array(
    '.item-image|text-align' => 'center', 
    '.item-image|vertical-align' => 'middle', 
    '.item-image img.single_image|width' => '300px' 
); 
$cssFinal = ''; 
array_walk($css, function($value, $key) use (&$cssFinal) { 
    $key = explode('|', $key); 
    $cssFinal .= array_key_exists(0, $key) && array_key_exists(1, $key) ? $key[0].'{'.$key[1].':'.$value.';};'."\r\n" : ''; 
}); 
file_put_contents('your.css', $cssFinal); 

注意如果0和1鍵存在,我們驗證了更先進的解決方案,否則就顯示什麼。

,我們在字符串都爲文件和瀏覽器的末尾添加一個分界線,當然如果你想讓它寫入一個文件

將寫有你的CSS文件中它:

.item-image{text-align:center;}; 
.item-image{vertical-align:middle;}; 
.item-image img.single_image{width:300px;};