在php中的目标索引后创建一个新键


Creating a new key after a target index in php

我正在尝试将每个图像路径存储在数据库中。我想给每个图像加上一个带有名称的历元时间戳。让我们看看这里。

$base = 'uploads/testpic.png';
$explode = explode('.', $base);

所以如果我在这里打印r($burst),我会得到

Array
(
    [0] = testpic
    [1] = png
)

现在我想在这里的索引0之后插入一个新的键,它将包含time()函数值。所以数组看起来像这样。

Array
(
    [0] = testpic
    [1] = 12313485 //the epoch time 
    [2] = png
)

稍后将再次内爆阵列,因此最终每个图像都将获得不重复的图像这样命名:uploads/testpic12313485.png

我怎样才能做到这一点?

创建一个新数组:

$newArr = [$explode[0], time(), $explode[1]];

虽然插入数组是可能的,但即使在PHP中,这也不是微不足道的。您需要向后循环遍历数组,将所有元素向上移动一个索引,直到达到插入目标。

即便如此,数字索引数组在PHP中也不是连续的,例如,您最终可能会得到以下数组:

array(3) {
  [0]=>
  int(1)
  [2]=>
  int(2)
}

这是完全正确的。

它没有回答如何在数组中间插入数组元素,但我会做这样的事情:

$parts = pathinfo($base);
$newname = $parts['filename'] . time() . $parts['extension'];

使用所提供的工具。

您可以使用substra_replace并将时间戳插入字符串中。。。

<?php
    $base = 'uploads/testpic.png';
    $explode = explode('.', $base);
    $newstr = substr_replace($base,time(),strpos($base,"."),0);
    var_dump($newstr);
?>