我需要填充一个多维数组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);
?>
答案 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);
?>
你的一切都很好。你只需要归还你操纵的东西。