1

次のような配列がある場合:

配列 ( [ date _type] => Date [ date _text] => 20/12/2012 [ place _type] => Place [ place _text] => NY )

次のような結果を印刷するにはどうすればよいですか:

<span>Date</span><div>20/12/2012</div>
<span>Place</span><div>NY</div>
so on.... (if more custom array)

私は今このステップに来ました

$custom_info = array (
  "date_type" => "Date",
  "date_text" => "20/12/2012",
  "place_type"=>"Place",
  "place_text" => "NY" 
) ;
$count = count($custom_info)/2;

for ($i=1; $i<$count; $i++)
{

}

誰かが私を助けることができますか?

4

2 に答える 2

4

配列が常にあなたが書いた構造を持っている場合は、これを使用してください

    $i = 0;
    foreach ($custom_info as $k => $v) {
        if ($i % 2 == 0){
            echo "<span>".$v."</span>";
        } else {
            echo "<div>".$v."</div>";
        }

        $i++;
    }

テスト済み

説明:

配列構造に従って、最初の要素の値をスパンにエコーし、2 番目の要素の値を div にエコーする必要があります。次のようになります。$i % 2 == 0要素番号 0、2、4 などの場合、スパンに出力し、1 の場合は、 3、5 など、div で印刷します。a % bで割ると余りが得aられるb

$i = 0,  $i % 2 --> 0
$i = 1,  $i % 2 --> 1
$i = 2,  $i % 2 --> 0
$i = 3,  $i % 2 --> 1
$i = 4,  $i % 2 --> 0
于 2012-11-12T10:37:35.200 に答える
2

foreachexplode()およびucfirst(): _

foreach( $custom_info as $k => $v){
    $parts = explode( '_', $k);
    if( count($parts) != 2){
       throw new Exception( 'Invalid format of key: ' . $k);
    }

    if( $parts[1] != 'text'){
       continue;
    }

    // Build label
    $key = $parts[0] . '_type';
    $label = '';
    if( isset( $custom_info[ $key])){
        $label = $custom_info[ $key];
    } else {
        $label = ucfirst( $parts[0]);
    }

    echo '<span>' . htmlspecialchars( $label) . '</span><div>' 
         . htmlspecialchars( $v) . '</div>';
}

または、次のような関数に置き換えることもできますexplode()(これは をlong_key_text使用してもサポートしますstrrpos()):

function getParts( $key){
    $pos = strrpos( $key, '_');
    if( $pos === false){
        return false; // or array or so
    }

    return array(
        substr( $key, 0, $pos),
        sbustr( $key, $pos+1)
    );
}

Elbysのコメントとあなたの答えに基づいて、これを行う最も簡単な方法は次のとおりです。

$custom_info = array (
  "Date" => "20/12/2012",
  "Place" => "NY" 
) ;

foreach( $custom_info as $k => $v){
    echo '<span>' . htmlspecialchars( $k) . '</span><div>' 
         . htmlspecialchars( $v) . '</div>';
}
于 2012-11-12T10:36:26.587 に答える