Как сохранить переменные массива в другом массиве PHP - PullRequest
0 голосов
/ 07 июня 2019

Я задаю вопрос как 3 * 5 =?а также ?* 5 = 15. Для этого я сохраню переменную массива ($ arrayTotalQuestions) с номером от 1 до 10 и переменную массива ($ arrayAnswers) с номером 5,10,15,20,25,30,35,40,45,50 внутри $ массива1.Я зациклю эти 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.Как я могу решить это?

1 Ответ

0 голосов
/ 07 июня 2019

Как в сообщении об ошибке вы пытаетесь преобразовать массив в строку, что невозможно.

Взгляните на этот пример:

<?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 параметра: separator и array и выводит строку, представляющую собой все значения массива, разделенные вашим разделителем.

Таким образом, приведенный выше пример становится:

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

Какие выходы This is my array: 1, 2, 3, 4, 5


Обновлено на основе комментария

Чтобы использовать 2 или более массивов в одном и том же цикле foreach, вам просто нужно преобразовать его в цикл for:

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

Есть способ сделать это и с циклом foreach, но я считаю, что это не совсем чистый способ сделать это для обслуживания (только мои предпочтения).

foreach($array1 as $index => $value) {
  echo $value.': '.$array2[$index];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...