Сращивание массива для добавления элемента по определенному индексу

$add = array_splice($fileArr1, $addWhere, 1, $addSong);

Некоторое время я работал над проектом, который добавляет название песни в определенное место в массиве на основе переменных в форме. Я действительно запутался и могу предоставить дополнительный код, если это поможет решить мою проблему. Спасибо.

<form method="post" action="addtlogan9573.php">
<p><label for="addSong">Add what song? </label><input type="text" name="addSong" id="addSong" /></p>
<p><label for="addWhere">Add where? </label><input type="text" name="addWhere" id="addWhere" /></p>

Вот весь мой код как есть.

<?php

$fileName = "tunes.txt";
$fileString = file_get_contents($fileName);
$fileArr = explode("|", $fileString);
$fileArr1 = array_values($fileArr);
array_unshift($fileArr1, ' ');
unset($fileArr1[0]);


if (!$_POST) {

?>

<form method="post" action="addtlogan9573.php">
<p><label for="addSong">Add what song? </label><input type="text" name="addSong" id="addSong" /></p>
<p><label for="addWhere">Add where? </label><input type="text" name="addWhere" id="addWhere" /></p>
<input class="MyButton" type="submit" name="submit">
</form>


<?php
}
else {


print "<pre>";
$addSong = $_POST['addSong'];
$addWhere = $_POST['addWhere'];
$add = array_splice($fileArr1, $addWhere, 1, $addSong);
foreach ($add as $key => $val){
print "$key. $val\n";
}
print "</pre>";

$append=implode("|", $fileArr1);
file_put_contents("backups/".microtime("tunes.txt"), $append);

include("inc_navigationtlogan9573.php");

?>

-1

Решение

Вы можете перебрать массив и создать новый массив:

if ($_POST['formSubmit']) {
$newArr = array();
$addWhere = $_POST['addWhere'];
$addSong = $_POST['addSong'];

$cnt = 0;
foreach($fileArr1 as $file) {
if ($cnt == $addWhere) {
$newArr[] = $addSong;
$newArr[] = $file;
} else {
$newArr[] = $file;
}
$cnt++;
}
}

$ newArr — финальный массив песен. Вам нужно убедиться, что у вас есть следующее в качестве кнопки отправки:

<input type="submit" name="formSubmit" value="Submit" />

Это твой код, только он работает.

<?php

$fileName = "tunes.txt";
$fileString = file_get_contents($fileName);
$fileArr = explode("|", $fileString);
$fileArr1 = array_values($fileArr);
array_unshift($fileArr1, ' ');
unset($fileArr1[0]);

?>

<form method="post" action="addtlogan9573.php">
<p><label for="addSong">Add what song? </label><input type="text" name="addSong" id="addSong" /></p>
<p><label for="addWhere">Add where? </label><input type="text" name="addWhere" id="addWhere" /></p>
<input class="MyButton" type="submit" name="formSubmit" />
</form>


<?php

if ($_POST['formSubmit']) {
$newArr = array();
$addWhere = $_POST['addWhere'];
$addSong = $_POST['addSong'];

$cnt = 0;
foreach($fileArr1 as $file) {
if ($cnt == $addWhere) {
$newArr[] = $addSong;
$newArr[] = $file;
} else {
$newArr[] = $file;
}
$cnt++;
}
}

$append=implode("|", $fileArr1);
file_put_contents("backups/".microtime("tunes.txt"), $append);

include("inc_navigationtlogan9573.php");

?>

Используя это:

if (!$_POST)

не сработает Вам нужно сослаться на конкретное имя переменной поста. Вы будете использовать $ newArr как правильный массив песен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]