【问题标题】:Splicing an array to add an item at a specific index拼接数组以在特定索引处添加项目
【发布时间】:2016-02-16 23:00:21
【问题描述】:
$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"); 

?>

【问题讨论】:

    标签: php splice


    【解决方案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' 作为正确的歌曲数组。

    【讨论】:

    • 变量 addWhere 和 addSong 是用户在表单中输入的内容,实际上并没有用。
    • 没关系。 addSong 变量是一个音频文件。我假设 addWhere 变量是在数组中添加歌曲的位置?
    • 这不是一个音频文件,它只是一个歌曲列表。并且用户应该能够添加歌曲并在提交表单时在数组中看到它。
    • 哦,好吧,那么 addSong 变量是一个歌曲数组?那么,如果用户要能够在前端操作数组,为什么要尝试将它放在后端的数组中呢?如果用户可以随意设置新歌,数据就会按顺序过来。
    • addSong 变量是用户想要添加的歌曲的名称。如果您需要查看我正在使用的表单,我可以编辑更多代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2012-03-25
    • 2011-07-05
    相关资源
    最近更新 更多