我想将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;
}
}
这不起作用。
答案 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;
}