PHP将stdClass对象转换为字符串并使用最大值减少数组

时间:2014-05-11 21:02:15

标签: php arrays stdclass

我想将stdClass对象转换为字符串,并使用stdClass对象的最大值减少数组。

这是我的阵列:

Array
(

[135] => Array
    (
        [0] => stdClass Object
            (
                [ID] => 145
            )

        [1] => stdClass Object
            (
                [ID] => 138
            )

        [2] => stdClass Object
            (
                [ID] => 139
            )

    )

[140] => Array
    (
        [0] => stdClass Object
            (
                [ID] => 163
            )

        [1] => stdClass Object
            (
                [ID] => 155
            )
)

基本上它应该是这样的:

 Array
 (
 [135] => 139
 [140] => 164
 )

这可能吗?我已经尝试了各种foreach循环但是我没有使用stdClass对象...

到目前为止我的尝试:

 foreach($ids as $k => $v) {
   for($i = 0; $i < count($v); $i++) {
        $idss[$i] = array()$v;
    }
 }

这不起作用。

3 个答案:

答案 0 :(得分:5)

这将解决您的目的。如果出现任何问题,请告诉我。

$ids[135][0]->ID = 145;
$ids[135][1]->ID = 135;
$ids[135][2]->ID = 155;
$ids[140][0]->ID = 125;
$ids[140][1]->ID = 135;
$idss = array();
foreach($ids as $k => $v) {
   for($i = 0; $i < count($v); $i++) {
        if(!@$idss[$k] || $v[$i]->ID > $idss[$k])
        {
            $idss[$k] = $v[$i]->ID;
        }
    }
 }
 echo "<Pre>";
 print_r($idss);
 die;

答案 1 :(得分:1)

已经回答,但这是

的缩写版
$final_array =array();
foreach($arr as $key=>$val){
  $max = max(array_keys($val));
  $final_array[$key] = $val[$max]->ID ;
}

print_r($final_array);

此处$arr是您的输入数组。

答案 2 :(得分:0)

您需要在内部for循环中进行一些比较,以了解哪一个保持最大值。这是一个例子:

$new_arr = array();
foreach($elements as $index => $value){
  $max = -1;
  $foreach($value as $obj){
    if($obj->id > $max)
      $max = $obj->id;
  }
  $new_arr [$index] = $max;
}