2017-10-07 8 views
-1

からCSSを生成します。は、配列されている、私はここで、次の配列を解析し、CSSにそれを生成する方法を知りたいARRAY

$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画像クラスで)同じマークアップでテキスト整列垂直整列をマージする必要がありますので、また、第1及び第2のアレイは、同じキーを持つれます。

おかげで、私は本当にすべてのための感謝に役立ちます:)

+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

私はあなたの問題.Iを解決するためにあなたの小さなヒントを提供します、それを行うための最善の方法は.But言ってはいけない、それはあなたの

<?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} 

そのキーがあなたのcss proeprtyを更新する必要があり、その後、既に存在しているかどうかを確認する必要があり、まだ完全には行われないことになるあなたはを有することができると仮定には複数の時間が配列されています

0

これを解決するために多くの方法があります。forを使用して、foreachwhileまたは配列機能、およびそれがmultidimensionalsアレイ以上の多くのものを含めるように育つかもしれません。

あなたはすでに前回の回答でforforeachの回答があり、whileの回答はほぼ同じです。

だから私は、それ以外の場合は何も示していない、あなたの鍵は0と1のために存在するならば、我々は検証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); 

お知らせを使用して、より高度なソリューションを与えるでしょう。

、私たちは、あなたがそれをファイルに

を書き込みたい場合、それはそれであなたのCSSを使用してファイルを書き込みますもちろん、ファイルのためにとブラウザの両方に文字列の末尾に区切り行を追加します。

.item-image{text-align:center;}; 
.item-image{vertical-align:middle;}; 
.item-image img.single_image{width:300px;}; 
関連する問題