为什么我的函数不能回应我做的返回数组?

时间:2014-02-13 13:59:03

标签: php arrays

这只是一个简单的脚本,用于将整数数组从奇数分割为偶数,但是当我尝试输出我所做的两个不同的数组时,屏幕上没有输出任何内容。以下是我的代码:

<?php
$ints = [1, 2, 3, 4];
function  getEvens($evens){
    $even_array = null;
    $odd_array = null;
    foreach ($evens  as  $value){
        if ($value / 2 == 0) {
            $even_array = array($value);

        }
        else {
            $odd_array = array($value);

        }

    }
    return  $even_array;
    return $odd_array;

}
echo  getEvens($ints);
?>

5 个答案:

答案 0 :(得分:3)

if ($value / 2 == 0) {
如果$ value为0,

$value / 2将只为0

0/2 = 0
1/2 = 0.5
2/2 = 1
etc

你的意思是

if ($value % 2 == 0) {

修改

$even_array = array($value);

总是replace $ even_array带有指定的值,所以你只能得到最后的结果

答案 1 :(得分:1)

您只能有一个return语句 - 当函数到达第一个return时,第二个return将永远不会被执行。并且数组上的echo产生错误,您需要使用print_r()var_dump()

此外,您使用不正确的运算符来确定某些内容是奇数还是偶数。使用modulus

最后,您不断重新初始化数组,而不是为其添加值。试试这个:

$ints = [1, 2, 3, 4];
function  getEvens($evens){
    $even_array = array();
    $odd_array = array();
    foreach ($evens  as  $value){
        if ($value % 2 == 0) {
            $even_array[] = $value;

        }
        else {
            $odd_array[] = $value;

        }

    }
    return array('even' => $even_array, 'odd' => $odd_array);

}

var_dump(getEvens($ints));

最后,你的结果是:

Array
(
    [even] => Array
        (
            [0] => 2
            [1] => 4
        )

    [odd] => Array
        (
            [0] => 1
            [1] => 3
        )

)

答案 2 :(得分:1)

尝试如下。阅读代码中的注释

$ints = [1, 2, 3, 4];
function  getEvens($evens){
    $even_array = array(); //Declare arrays as array() instead of null
    $odd_array = array();
    foreach ($evens  as  $value){
        if ($value % 2 == 0) { //Use modulo to detect if it is even or odd
            $even_array[] = $value; // Use [] to add value to array

        }
        else {
            $odd_array[] = $value;

        }

    }

    //You can only return 1 element, So combine them in one array
    return  array(
        'even' => $even_array; 
        'odd' => $odd_array
    );

}
echo  '<pre>';
print_r(getEvens($ints));
echo  '</pre>';

答案 3 :(得分:0)

将运营商更改为% ...

$value =0 then only the result is 0

答案 4 :(得分:0)

你在找这个吗?

<?php
$ints = array(1,2,3,4);

function  getEvens($evens){
    $even_array = null;
    $odd_array = null;

    foreach ($evens  as  $value){

        if ($value % 2 == 0)
        {
            $return_evn_array[] = array($value);

        }
        else 
        {
            $return_odd_array[] = array($value);

        }

    }
    return  array('evn_array' => $return_evn_array, 'odd_array' =>$return_odd_array);

}
 echo '<pre>';
 print_r(getEvens($ints));
 echo '</pre>';
?>