首页 > 解决方案 > 如何将数组变量保存在另一个数组 PHP 中

问题描述

我正在提出 3 * 5 = 之类的问题?和 ?* 5 = 15。为此,我将保存一个编号为 1 到 10 的数组变量 ($arrayTotalQuestions) 和一个编号为 5,10,15,20,25,30,35 的数组变量 ($arrayAnswers), $array1 内的 40,45,50。我将在我的表中循环这 2 行 20 次,如下所示:

foreach($array1 as $array1) {
    echo $array1[array_rand($array1)];
}

数组内的(数组)变量:

$arrayTotalQuestions = range(1, 10);
$number = 5;
$arrayAnswers = (5, 10, 15, 20, 25, 30, 35, 40, 45, 50);

现在我想将这 3 个变量存储在另一个名为 $array1 的数组中:

$array1 = array(
    "<tr><td>$this->arrayTotalQuestions</td>    <td>x</td>     <td>$this->number</td>     <td>=</td>      <td><input type='text' name='txtAnswer[$this->arrayTotalQuestions]'></td></tr>",
    "<tr><td><input type='text' name='txtAnswer[$this->arrayAnswers]' value=''></td>   <td>x</td>  <td>$this->number</td>   <td>=</td>  <td>$this->arrayAnswers</td></tr>"
);

但我收到错误“数组到字符串的转换...”,因为 $array1 中的数组变量。我该如何解决这个问题?

标签: phparraysloops

解决方案


就像错误说您正在尝试将数组转换为字符串一样,这是不可能的。

看看这个例子:

<?php
  $array = [1,2,3,4,5];
  $newVar = "This is my array: $array";
?>

这会导致错误E_NOTICE : type 8 -- Array to string conversion -- at line 3

您正在尝试输出一个数组,其中包含多个值,作为字符串的一部分。PHP 不知道你想如何做到这一点(它应该只列出所有数组变量吗?它是否在它们之间放置了一个空格?一个逗号?一个逗号和一个空格?等等)

因此,您需要自己将数组转换为字符串。一种方法是使用join()PHP 中的函数。

join()接受 2 个参数:separatorarray输出一个字符串,该字符串是由分隔符分隔的所有数组值。

所以上面的例子变成了:

<?php
  $array = [1,2,3,4,5];
  $newVar = "This is my array: ".join(", ", $array);
?>

哪个输出This is my array: 1, 2, 3, 4, 5


根据评论更新

要在同一个 foreach 循环中使用 2 个或更多数组,只需将其更改为 for 循环:

for($i = 0, $i < count($array1); $i++) {
  echo $array1[$i].': '.$array2[$i];
}

也有一种使用 foreach 循环的方法,但我发现这不是一种干净的维护方法(只是我的偏好)。

foreach($array1 as $index => $value) {
  echo $value.': '.$array2[$index];
}

推荐阅读