填充多维数组PHP

时间:2017-01-16 20:55:44

标签: php arrays multidimensional-array

我需要填充一个多维数组arrayFinal,使它看起来像这样:

$arrayFinal = array(
    array('Number' => 1, 'isEven' => false, 'isPrime' => true),
    array('Number' => 2, '' => , '' => ), ...and so on
);

非常简单,但是数组没有填充,它以某种方式为空。

以下是代码:

<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
$arrayFinal = array();
$isEven = false;
$isPrime = false;

function check($a){

foreach($a as $el){

    if($el % 2 == 0){
        print($el.' is even ,');
        $isEven = true;
        print($isEven);
    }
    else{
        print($el." is odd ,");
        $isEven = false;
        print($isEven);
    }

    $temp = IsPrime($el);
    if ($temp==0){
        print(' not a Prime Number.<br />');
        $isPrime = true;
        print($isPrime); 
    }
    else{
        print(' a Prime Number.<br />');
        $isPrime = false;
        print($isPrime);
    }
        $arrayFinal[] = array('Number' => $el, 'isEven' => $isEven, 'isPrime' => $isPrime); 
    }
}


function IsPrime($n){
for($x=2; $x < $n; $x++){
    if($n%$x ==0){
        return 0;
    }
}
return 1;
}



check($arr);

print_r($arrayFinal);

 ?>

4 个答案:

答案 0 :(得分:1)

您的功能检查($ a)没有&#34;返回&#34 ;;

答案 1 :(得分:1)

您的$arrayFinal实际上已经填充了。您可以通过添加print_r($arrayFinal);语句作为函数的最后一行来查看。 (在for循环之后)。

问题是你在这里有一个可变范围问题。您基本上有两个具有相同名称的不同变量。在函数外部初始化$arrayFinal实际上是与函数中使用的变量不同的变量。 (对于您的其他变量$isEven$isPrime也是如此)

您正在更新函数的本地变量。但是在函数结束之前,你没有对该值做任何事情。

您可以通过在函数的最后一行添加以下内容来选择return该值:

 return $arrayFinal;

然后你可以像这样使用它:

$output = check($arr);
print_r($output);

然后,您可以从代码顶部删除$arrayFinal = array();

完整的代码可能类似于:

$arr = array(1,2,3,4,5,6,7,8,9,10);

$output = check($arr);
print_r($output);


function check($a){
    $isEven = false;
    $isPrime = false;
    $arrayFinal = Array();

    foreach($a as $el){

        if($el % 2 == 0){
            print($el.' is even ,');
            $isEven = true;
            print($isEven);
        }
        else{
            print($el." is odd ,");
            $isEven = false;
            print($isEven);
        }

        $temp = IsPrime($el);
        if ($temp==0){
            print(' not a Prime Number.<br />');
            $isPrime = true;
            print($isPrime); 
        }
        else{
            print(' a Prime Number.<br />');
            $isPrime = false;
            print($isPrime);
        }

        $arrayFinal[] = array('Number' => $el, 'isEven' => $isEven, 'isPrime' => $isPrime); 
    }

    return $arrayFinal;
}

function IsPrime($n){
    for($x=2; $x < $n; $x++){
        if($n%$x ==0){
            return 0;
        }
    }
    return 1;
}

答案 2 :(得分:1)

  嘿@Shiroi Okami你有一个范围问题,因为在php中你不能   在函数中使用全局变量或数组,反之亦然   你在函数中声明$ arrayFinal的情况和   函数中的$ arrayFinal,如果你想使用它们被视为不同的数组   $ arrayFinal在函数内部,因此只需声明它   全局内部函数如下:

     

global $ arrayFinal;

global允许我们将变量或数组用于函数外部

尝试以下代码,它将解决您的问题

<?php
$arr = array(1,2,3,4,5,6,7,8,9,10);
$arrayFinal = array();
$isEven = false;
$isPrime = false;

function check($a){
$arr1 = array();
foreach($a as $el){

    if($el % 2 == 0){
        print($el.' is even ,');
        $isEven = true;
        print($isEven);
    }
    else{
        print($el." is odd ,");
        $isEven = false;
        print($isEven);
    }

    $temp = IsPrime($el);
    if ($temp==0){
        print(' not a Prime Number.<br />');
        $isPrime = true;
        print($isPrime); 
    }
    else{
        print(' a Prime Number.<br />');
        $isPrime = false;
        print($isPrime);
    }
        global $arrayFinal;
        $arrayFinal[] = array('Number' => $el, 'isEven' => $isEven, 'isPrime' => $isPrime); 
    }
}


function IsPrime($n){
for($x=2; $x < $n; $x++){
    if($n%$x ==0){
        return 0;
    }
}
return 1;
}



check($arr);

print_r($arrayFinal);

 ?>

答案 3 :(得分:1)

复制粘贴此代码,

<?php
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$arrayFinal = array();
$isEven = false;
$isPrime = false;

function check($a) {

    foreach ($a as $el) {

        if ($el % 2 == 0) {
            print($el . ' is even ,');
            $isEven = true;
            print($isEven);
        } else {
            print($el . " is odd ,");
            $isEven = false;
            print($isEven);
        }

        $temp = IsPrime($el);
        if ($temp == 0) {
            print(' not a Prime Number.<br />');
            $isPrime = true;
            print($isPrime);
        } else {
            print(' a Prime Number.<br />');
            $isPrime = false;
            print($isPrime);
        }
        $arrayFinal[] = array('Number' => $el, 'isEven' => $isEven, 'isPrime' => $isPrime);
    }
    return $arrayFinal; // I added this line
}
function IsPrime($n) {
    for ($x = 2; $x < $n; $x++) {
        if ($n % $x == 0) {
            return 0;
        }
    }
    return 1;
}
check($arr);
print_r($arrayFinal);
?>

你的一切都很好。你只需要归还你操纵的东西。