$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");
?>
Вы можете перебрать массив и создать новый массив:
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 как правильный массив песен.
Других решений пока нет …