我有一个正负值的数组如何在PHP中分离它?

时间:2012-05-24 16:23:31

标签: php arrays

此数组中包含正值和负值。

$arr_pn = array( 1, -1, 2, 10,-15 );

我的问题是如何将所有负值分隔并存储在一个数组中并将正值分离到另一个数组中?

3 个答案:

答案 0 :(得分:6)

$arr_p = array();
$arr_n = array(); 
foreach ($arr_pn as $val) {
    if ($val >= 0) {
        $arr_p[] = $val;
    }
    else {
        $arr_n[] = $val;
    }
}

答案 1 :(得分:4)

减少原始数组

不是创建两个数组,只需删除所有负数,只留下正数:

$neg = array();
foreach( $arr_pn as $key => $num ) {
  if ( $num < 0 ) {
    unset( $arr_pn[ $key ] );
    array_push( $neg, $num );
  }
}

演示:http://codepad.org/TCwXYn2P

一个警告是原始数组将缺少密钥。如果您计划通过它们计算,请考虑这一点。您可以使用array_values()重新键入数组:

$arr_pn = array_values( $arr_pn );

两个产生的数组

如果你想要两个数组:

$neg = array();
$pos = array();

foreach( $arr_pn as $num ) {
  $num < 0 
    ? array_push( $neg, $num ) 
    : array_push( $pos, $num ) ;
}

演示:http://codepad.org/pHVyTRMc

答案 2 :(得分:3)

$arr_pn = array( 1, -1, 2, 10,-15 );

$arrayPositive = array_filter($arr_pn, function($value) { return $value > 0.0; } );
$arrayNegative = array_filter($arr_pn, function($value) { return $value < 0.0; } );

var_dump($arrayPositive);
var_dump($arrayNegative);