Gar*_*bit 1 php arrays object multidimensional-array
**编辑**如果我只使用数组会发生什么,例如
array(array('name'=>'bla','distance'=>'123'); array('name'=>'b123a','distance'=>'1234214'););
这会更容易找到最小值吗?
嗨,我正在尝试从一个对象数组中检索距离值最小的对象.这是我的数据集;
[0] => myObjectThing Object
(
[name:myObjectThing:private] => asadasd
[distance:myObjectThinge:private] => 0.9826368952306
)
[1] => myObjectThing Object
(
[name:myObjectThing:private] => 214gerwert24
[distance:myObjectThinge:private] => 1.5212312547306
)
[2] => myObjectThing Object
(
[name:myObjectThing:private] => abc123
[distance:myObjectThinge:private] => 0.0000368952306
)
Run Code Online (Sandbox Code Playgroud)
所以我希望能够解除距离值最小的物体.在这种情况下,它将是名称为abc123的对象
嗯,PHP> = 5.3我会尝试这样的事情:
$Object = array_reduce($data,function($A,$B){
return $A->distance < $B->distance ? $A : $B;
})
Run Code Online (Sandbox Code Playgroud)
对于PHP <5.3,填充就足够了:
function user_defined_reduce($A,$B){
return $A->distance < $B->distance ? $A : $B;
}
$Object = array_reduce($data,"user_defined_reduce");
Run Code Online (Sandbox Code Playgroud)
以前建议的答案没有解释需要包含一个$initial值 to array_reduce()。解决方案因此不起作用。
这个对我有用(PHP 5.3.13):
$array = array(
array(
'name' => 'something',
'value' => 56
),
array(
'name' => 'else',
'value' => 54
),
array(
'name' => 'else',
'value' => 58
),
array(
'name' => 'else',
'value' => 78
)
);
$object = array_reduce($array, function($a, $b){
return $a['value'] < $b['value'] ? $a : $b;
}, array_shift($array));
print_r($object);
Run Code Online (Sandbox Code Playgroud)
这会给我:
[0] => Array
(
[name] => else
[value] => 54
)
Run Code Online (Sandbox Code Playgroud)
而以前的解决方案给了我null. 我假设 PHP < 5.3 需要为array_reduce().
| 归档时间: |
|
| 查看次数: |
2734 次 |
| 最近记录: |