Php 将数组与数组_multiply()相乘将返回一个空数组
我试图将两个数组相乘(价格和用户输入的数量)Php 将数组与数组_multiply()相乘将返回一个空数组,php,arrays,multiplication,Php,Arrays,Multiplication,我试图将两个数组相乘(价格和用户输入的数量) if(isset($_POST['submit'])) { unset($_POST['submit']); $r=array(); $userqty=array(); $userqty=$_POST; function array_multiply($userqty, $fullbox) { if (!is_array($userqty) || !is_array($fullbox)) { exit(
if(isset($_POST['submit']))
{
unset($_POST['submit']);
$r=array();
$userqty=array();
$userqty=$_POST;
function array_multiply($userqty, $fullbox) {
if (!is_array($userqty) || !is_array($fullbox)) {
exit('Needs to be an array.');
}
$c1 = count($userqty);
$c2 = count($fullbox);
if ($c1 != $c2) {
exit('$setOne and $setTwo must be the same length.');
}
for ($i = 0; $i < $c1; $i++) {
$r[$i] = $userqty[$i] * $fullbox[$i];
}
return $r;
}
var_dump($fullbox);
echo '<br>';
echo '<br>';
var_dump($userqty);
echo '<br>';
echo '<br>';
var_dump($r);
}
if(isset($\u POST['submit']))
{
未设置($_POST['submit']);
$r=数组();
$userqty=array();
$userqty=$\u POST;
函数数组\u乘法($userqty,$fullbox){
如果(!is_数组($userqty)| |!is_数组($fullbox)){
退出('需要是一个数组');
}
$c1=计数($userqty);
$c2=计数($fullbox);
如果($c1!=$c2){
退出(“$setOne和$setTwo必须具有相同的长度。”);
}
对于($i=0;$i<$c1;$i++){
$r[$i]=$userqty[$i]*$fullbox[$i];
}
返回$r;
}
var_dump($fullbox);
回声“
”;
回声“
”;
变量转储($userqty);
回声“
”;
回声“
”;
var_dump($r);
}
当我在最后进行数组转储时,我看到我的值在数组中是正确的,除了结果数组的值是array(0){}时,它应该具有与我原来的两个相同的数字或条目。提前感谢。这里有很多问题
是一个局部变量。请将其设为全局变量(不要),或者只使用返回值$r
- 您实际上并没有调用该函数
- 您不会声明
,即使它是为您隐式声明的$r
var_dump(array_multiply($userqty, $fullbox));
彻底重写:
function array_multiply($a, $b) {
$len = count($a);
if($len !== count($b)) {
throw new LengthException('The two arguments to array_multiply should have the same length.');
}
$result = array();
for($i = 0; $i < $len; $i++) {
$result[] = $a[$i] * $b[$i];
}
return $result;
}
函数数组\u乘法($a,$b){
$len=计数($a);
如果($len!==计数($b)){
抛出新的LengthException('array_multiply的两个参数应该具有相同的长度');
}
$result=array();
对于($i=0;$i<$len;$i++){
$result[]=$a[$i]*$b[$i];
}
返回$result;
}
而且也不要只传入
$\u POST
。那会很麻烦。愚蠢的问题-你似乎根本没有调用你的函数…加上变量范围规则-你在函数外部初始化你的$r
数组-它在你的函数内部不会可见,除非你将它设置为全局的,加上什么ewsi说-你没有调用你的函数。这个问题并不愚蠢-即使这是问题的原因,我们都会犯错。@Djacksway-你为什么要将userqty
声明为空数组,然后在下一行立即覆盖它?@Utkanos我想我必须将变量声明为数组,以便将其设置为空数组与我从表单中获得的$_post数组相同。不-您不需要在PHP中对变量进行任何准备工作。一个赋值会覆盖另一个赋值。删除原始的array()
赋值不会产生任何效果。$fullbox
似乎也不会初始化。