php array_filter基于特定列

时间:2013-03-05 19:15:15

标签: php

我有一个对象数组如下:

[0] => stdClass Object
    (
        [lid] => 2492
        [post_title] => Winter League 2012/2013
        [eid] => 2121
        [etitle] => a 2013
        [rid] => 2358
        [rtitle] => sdcc2013_2M_W
        [rtype] => W
    )

[1] => stdClass Object
    (
        [lid] => 2492
        [post_title] => Winter League 2012/2013
        [eid] => 2121
        [etitle] => a 2013
        [rid] => 2359
        [rtitle] => sdcc2013_4M_M
        [rtype] => M
    )

[2] => stdClass Object
    (
        [lid] => 2492
        [post_title] => Winter League 2012/2013
        [eid] => 2123
        [etitle] => e 2013
        [rid] => 2360
        [rtitle] => eircom_Women_2.5Mile
        [rtype] => W
    )

[3] => stdClass Object
    (
        [lid] => 2492
        [post_title] => Winter League 2012/2013
        [eid] => 2123
        [etitle] => e 2013
        [rid] => 2362
        [rtitle] => eircom2013_men_5mile
        [rtype] => M
    )

我希望“获取”'rid'值的子集

 (2358,2359,1360,2362)

我应该使用哪个数组操作函数?

2 个答案:

答案 0 :(得分:4)

我建议array_map()

$original_array; // your original array
$rid_array = array_map(function($val) {
    return $val->rid;
}, $original_array);

或者对于PHP< 5.3

$original_array; // your original array
$rid_array = array_map('map_function', $original_array);

function map_function($val) {
    return $val->rid;
}

答案 1 :(得分:1)

我会使用array_map()和回调函数来设置对象的rid字段。

function set_rid($obj, $val)
{
    return $obj->rid = $val;
}

$my_rids = array(
    '1',
    '2',
    '3',
    '4'
);
array_map('set_rid', $my_array, $my_rids);