0

コンマ区切りの設定リストを含む文字列 ($c) があります。スタンドアロンの設定もあれば、等号で区切られたサブセットが必要な設定もあります。

例:

$c = "title,author,tax=taxonomy_A,tax=taxonomy_B,date";

この文字列を次のように出力する多次元配列 ($columns) に解析する必要があります。

$columns = array(
    [0] => array( 'title', '' ),
    [1] => array( 'author', '' ),
    [2] => array( 'tax', 'taxonomy_A' ),
    [3] => array( 'tax', 'taxonomy_B' ),
    [4] => array( 'date', '' )
)

私はこれを試しました:

        $c = "title,author,tax=taxonomy_A,tax=taxonomy_B,meta=custom_field_key";
    $c = explode( ',', $c );
    $columns = array( explode( '=', $c ) );

しかし、それはこれを返すだけです:

$columns = array(
    [0] => array( 'Array' )
)

ここで何が欠けていますか?2 番目の爆発を別の関数に置き換える必要がありますか?

前もって感謝します!

4

3 に答える 3

2
foreach(explode(',', "title,author,tax=taxonomy_A,tax=taxonomy_B,date") as $item)
        $items[] = array_pad(explode('=', $item), 2, '');
于 2012-06-27T15:36:47.013 に答える
1

2 番目の爆発を行うには、最初の爆発の後にループする必要があります。

$c = "title,author,tax=taxonomy_A,tax=taxonomy_B,meta=custom_field_key";
$arr = explode( ',', $c );

$result = array();
foreach($arr as $a) {
    array_push($result, explode('=', $a));
}

print_r($result);
于 2012-06-27T15:29:55.623 に答える
0

コードでは、2 番目の爆発を配列の各要素に適用するのではなく、配列オブジェクト全体に 1 回だけ適用します。これにより、配列が文字列「Array」に変換され、実行explode()されて出力が得られます。

array_map()代わりに( PHP docu )を使用できます。

function filterArr( $value ) {
   return explode( '=', $value )
}

$c = "title,author,tax=taxonomy_A,tax=taxonomy_B,meta=custom_field_key";
$c = explode( ',', $c );
$c = array_map( "filterArr", $c );
于 2012-06-27T15:33:04.490 に答える