PHP数组仅显示最后一次推送的值
我制作了一个php脚本,您必须在其中向bucketlist添加内容,但它不能正常工作。 脚本需要输出bucketlist,但它只输出最后输入的值PHP数组仅显示最后一次推送的值,php,Php,我制作了一个php脚本,您必须在其中向bucketlist添加内容,但它不能正常工作。 脚本需要输出bucketlist,但它只输出最后输入的值 <?php echo "How much activities would you like to add?\n"; $a = readline (); $d = "What do you want to add to your bucket list?\n"; if (is_numeric($a)) {
<?php
echo "How much activities would you like to add?\n";
$a = readline ();
$d = "What do you want to add to your bucket list?\n";
if (is_numeric($a)) {
for ($x = 1; $x <= $a; $x++) {
echo $d;
$c = readline();
}
} else {
echo "'$a' isn't a number, try again.";
exit;
}
$bucketlist = [$c];
array_push($bucketlist);
foreach ($bucketlist as $z) {
echo "On your bucket list:\n";
echo $z;
echo "\n";
}
?>
在for循环的每次迭代中,$c=readline()
正在读取一个新值,但未将其添加到$bucketlist=[]
您将丢失该值,因此您还需要在每次迭代中将$c
的值添加到$bucketlist[]
中,并且必须在for循环内将$c
的值添加到$bucketlist[]
:
定义$bucketlist=[]代码>作为数组
使用array\u push($bucketlist,$c)循环中的代码>或$bucketlist[]=$c
echo“您希望添加多少活动?\n”;
$a=读线();
$d=“您想在您的存储桶列表中添加什么?\n”;
$bucketlist=[];
如果(是数字($a)){
对于($x=1;$x)
$bucketlist=[$c];
发生在循环之外,因此它只能访问循环结束时的$c
值
将其移动到for
循环中,并使其显示$bucketlist[]=$c;
,以便将其附加到bucketlist,而不是覆盖它
而且你不需要你的array\u push
行(我认为它没有做任何事情,因为你没有指定任何东西来推入数组)
在开始循环之前,还应将$bucketlist
定义为空数组
echo "How much activities would you like to add?\n";
$a = readline ();
$d = "What do you want to add to your bucket list?\n";
$bucketlist = array();
if (is_numeric($a)) {
for ($x = 1; $x <= $a; $x++) {
echo $d;
$c = readline();
$bucketlist[] = $c;
}
} else {
echo "'$a' isn't a number, try again.";
exit;
}
foreach ($bucketlist as $z) {
echo "On your bucket list:\n";
echo $z;
echo "\n";
}
echo“您希望添加多少活动?\n”;
$a=读线();
$d=“您想在您的存储桶列表中添加什么?\n”;
$bucketlist=array();
如果(是数字($a)){
对于上述作者提到的($x=1;$x),循环内部发生了$c=readline();
,因此每次迭代都会覆盖它。请尝试以下方法:
echo "How much activities would you like to add?\n";
$a = readline ();
$d = "What do you want to add to your bucket list?\n";
$bucketlist = [];
if (is_numeric($a)) {
for ($x = 1; $x <= $a; $x++) {
echo $d;
$c = readline();
array_push($bucketlist, $c);
}
} else {
echo "'$a' isn't a number, try again.";
exit;
}
foreach ($bucketlist as $z) {
echo "On your bucket list:\n";
echo $z;
echo "\n";
}
?>
echo“您希望添加多少活动?\n”;
$a=读线();
$d=“您想在您的存储桶列表中添加什么?\n”;
$bucketlist=[];
如果(是数字($a)){
对于($x=1;$x)
array\u push($bucketlist)需要两个参数您试过调试这个问题吗?bucketlist=[$c];发生在一个循环中
,不,这不是我说的,也不是OP的代码中发生的。请仔细阅读。但是,您的实际解决方案很好(尽管它与已经发布的解决方案没有区别)。好的。您的代码可以工作,但有趣的是,手册()上说:注意:如果您使用array_push()向数组中添加一个元素,最好使用$array[]=因为这样就没有调用函数的开销。
它仍然不能正常工作。现在它输出:您想添加多少活动?2您想添加什么到您的存储桶列表中?a您想添加什么到存储桶列表中?w在存储桶列表中:a在存储桶列表中:w但正确的输出必须是:How much活动您想添加什么?2您想添加什么到您的存储桶列表中?a您想添加什么到您的存储桶列表中?w在您的存储桶列表中:您必须删除存储桶列表的最后一个foreach并将其替换为存储桶列表中的echo:\n。内爆(“,”,$bucketlist)
非常感谢dopesky,所有其他人,也谢谢你们。你们都是一个很好的帮助!:)这会起作用,但有趣的是,手册()上说注意:如果使用array_push()向数组中添加一个元素,最好使用$array[]=因为这样就没有调用函数的开销。
@ADyson以正确的方式更新了代码
echo "How much activities would you like to add?\n";
$a = readline ();
$d = "What do you want to add to your bucket list?\n";
$bucketlist = [];
if (is_numeric($a)) {
for ($x = 1; $x <= $a; $x++) {
echo $d;
$c = readline();
array_push($bucketlist, $c);
}
} else {
echo "'$a' isn't a number, try again.";
exit;
}
foreach ($bucketlist as $z) {
echo "On your bucket list:\n";
echo $z;
echo "\n";
}
?>