从数组创建多维数组

时间:2014-12-13 17:08:31

标签: arrays wordpress

我想填充$list而不是该示例数据,为每个ID提供包含自定义字段值的数组。像这样:

foreach($idArr as $ID)
  array('.'get_post_meta($ID, 'name', true)'.'),
  array('.'get_post_meta($ID, 'email', true)'.')
  //and so on ...

}

$idArr包含帖子ID

print_r($idArr);
Array ( [0] => 242 [1] => 241 )

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

1 个答案:

答案 0 :(得分:0)

如果我正确解释您的问题,您可以使用get_post_custom();

$list = array();

foreach ( $idArr as $ID ) {
    $list[] = get_post_custom( $ID );
}

通过这样做你将获得的结构是

$list = array(
    0 => array(
        'key1' => array( [0] => 'value' ),
        'key2' => array( [0] => 'value2' ),
    )
);

这个问题是每个自定义字段都可以有多个值,因此您可以返回数组而不是字符串。它相当于get_post_meta( $post_id, 'key', false );。调整您的代码以使用此格式。

或者,如果您正在寻找特定字段,可以尝试:

$list = array();

foreach ( $idArr as $ID ) {
    $fields = get_post_custom( $ID );
    $values = array();

    // Select only the values you need and add them to the array. REPEAT as needed.
    if ( ! empty( $fields['email'][0] ) {
        $values[] = $fields['email'][0];
    } 

    $list[] = $values;        
}

上面的方法解决了我的第一个例子中的问题,这意味着每个字段都是数组而不是字符串。

我可能也想给每个数组值一个键。例如。 $list[]…变为$list[ $ID ]…