从PHP数组中复制一个元素

3

如何从数组中复制一个元素:

例如,我有以下数组:

Array
(
    [LRDEPN] => 0008.jpg
    [OABCFT] => 0030.jpg
    [SIFCFJ] => 0011.jpg
    [KEMOMD] => 0022.jpg
    [DHORLN] => 0026.jpg
    [AHFUFB] => 0029.jpg
)

如果我想复制这个:0011.jpg,应该怎么做?

我想获得这个:

Array
(
    [LRDEPN] => 0008.jpg
    [OABCFT] => 0030.jpg
    [SIFCFJ] => 0011.jpg
    [NEWKEY] => 0011.jpg
    [KEMOMD] => 0022.jpg
    [DHORLN] => 0026.jpg
    [AHFUFB] => 0029.jpg
)

你不能有两个具有相同键的数组元素,请更好地解释你需要做什么。 - Matteo Riva
我想复制一个元素!生成一个新的键,其值为我想要复制的值! - robertdd
3个回答

1

编辑:

看起来你修改了你的问题 :)

如果你想要一个带有重复值的键,可以这样做:

$array_name['NEWKEY'] = $array_name['SIFCFJ']

旧答案:

不可能。

一个数组不能有相同键的多个值。

$arr = array();
$arr['foo'] = 'bar1';
$arr['foo'] = 'bar2'; // this will wipe out bar1

如果你尝试复制:

$arr = array();
$arr['foo'] = 'bar1';
$arr['foo'] = 'bar1';

你将会用 bar1 覆盖与键 foo 相关联的值,使得数组只有一个键值对而不是两个。


好的!我明白了,我已经编辑了问题!我将生成一个新的密钥,但是我希望值保持不变! - robertdd
@robertdd:使用旧值创建新键是可能的。我已经更新了我的答案。 - codaddict
我该如何在 $array_name['SIFCFJ'] 后面添加 $array_name['NEWKEY']? - robertdd

1

类似以下代码,将uniqid()函数替换为您自己的函数:

<?php

$a=array(
    'LRDEPN' => '0008.jpg',
    'OABCFT' => '0030.jpg',
    'SIFCFJ' => '0011.jpg',
    'KEMOMD' => '0022.jpg',
    'DHORLN' => '0026.jpg',
    'AHFUFB' => '0029.jpg'
);

$i='0011.jpg';

$newArray=array();
foreach($a as $k=>$v){
    $newArray[$k]=$v;
    if($v==$i) $newArray[uniqid()]=$v;
}

print_r($newArray);

?>

这会帮助你:

Array
(
    [LRDEPN] => 0008.jpg
    [OABCFT] => 0030.jpg
    [SIFCFJ] => 0011.jpg
    [4bd014ebf3351] => 0011.jpg
    [KEMOMD] => 0022.jpg
    [DHORLN] => 0026.jpg
    [AHFUFB] => 0029.jpg
)

0
$arr['newkey'] = $arr['oldkey'];
natsort($arr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接