[英]need help in get values from array
嗨,需要帮助,首先要从数组中获取值,我要从数组下方获取连续值,例如== id:1,2,忽略获取值后发现连续值之间的差额,如果连续值没有退出,则将所有值求和投标价值(连续价值)
$bidperpage = array([0]=>array(['id']=>1,['bid']='10',['page']='5'),
[1]=>array(['id']=>2,['bid']='15',['page']='5'),
[2]=>array(['id']=>9,['bid']='20',['page']='2'),
[3]=>array(['id']=>3,['bid']='30',['page']='7'),
[4]=>array(['id']=>4,['bid']='40',['page']='7'),
[5]=>array(['id']=>5,['bid']='50',['page']='9'),
[6]=>array(['id']=>6,['bid']='60',['page']='4'),
[7]=>array(['id']=>8,['bid']='70',['page']='4'));
function checkconsecutivevalue($array) {
$ret = array();
$temp = array();
foreach($array as $val) {
if(next($array) == ($val + 1))
$temp[] = $val;
else
if(count($temp) > 0) {
$temp[] = $val;
$ret[] = $temp[0].':'.end($temp);
$temp = array();
}
else
$ret[] = $val;
}
return $ret;
}
如果没有其他说明,则您的数组定义是完全语法错误。 它应该是
$bidperpage = array(
0 => array('id' => 1, 'bid' => '10', 'page' => '5'),
etc...
);
注意正确使用的=>
运算符,并缺乏[]
括号。
在我看来,最简单的方法是使用usort
:
$bidperpage = array(array('id'=>1,'bid'=>'10','page'=>'5'),
array('id'=>2,'bid'=>'15','page'=>'5'),
array('id'=>9,'bid'=>'20','page'=>'2'),
array('id'=>3,'bid'=>'30','page'=>'7'),
array('id'=>4,'bid'=>'40','page'=>'7'),
array('id'=>5,'bid'=>'50','page'=>'9'),
array('id'=>11,'bid'=>'60','page'=>'q'),
array('id'=>8,'bid'=>'70','page'=>'4'));
//Sort function
function sortById($a,$b)
{
if ($a['id'] === $b['id'])
{
return 0;
}
return ($a['id'] > $b['id'] ? 1 : -1);
}
usort($bidperpage,'sortById');
更多信息: 请参阅文档
请记住,我假设键id
始终是紧迫的,如果不是这种情况,则可能要向回调函数添加额外的检查:
function sortById($a,$b)
{
if (!isset($a['id']) && !isset($b['id']))
{
return 0;
}
if (!isset($a['id']))
{
return 1;//move to end of array
}
if (!isset($b['id']))
{
return -1;
}
if ($a['id'] === $b['id'])
{
return 0;
}
return ($a['id'] > $b['id'] ? 1 : -1);
}
该功能不必那么冗长,但是由于我印象中您没有做太多尝试,因此我将由您自己决定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.