如何更改数组键的部分?

时间:2014-01-28 10:02:00

标签: php arrays associative-array

我正在关注名为$_FILES的数组:

Array
(
    [document_file_name_2] => Array
        (
            [name] => FAQ.doc
            [type] => application/msword
            [tmp_name] => /tmp/phpDnXqMX
            [error] => 0
            [size] => 35840
        )

    [document_file_name_5] => Array
        (
            [name] => Pay Slip-Sushil Kadam-June 2013.pdf
            [type] => application/pdf
            [tmp_name] => /tmp/php97sAKI
            [error] => 0
            [size] => 39648
        )

)

由于此数组是动态生成的,因此它的长度可能会有所不同。现在我想要实现的是改变现有数组键的一部分。我想让数组键从键[document_file_name_0]开始,依此类推。执行操作后应该会出现以下数组。任何人都可以帮助我如何实现这一目标?以下是所需的$_FILES数组:

Array
    (
        [document_file_name_0] => Array
            (
                [name] => FAQ.doc
                [type] => application/msword
                [tmp_name] => /tmp/phpDnXqMX
                [error] => 0
                [size] => 35840
            )

        [document_file_name_1] => Array
            (
                [name] => Pay Slip-Sushil Kadam-June 2013.pdf
                [type] => application/pdf
                [tmp_name] => /tmp/php97sAKI
                [error] => 0
                [size] => 39648
            )

    )

提前致谢。

4 个答案:

答案 0 :(得分:1)

$newArray=array();
$fileNum=0;
foreach ($originalArray as $file) {
    $newArray["document_file_name".$fileNum++]=$file;
}

$ newArray的内容应该是您正在寻找的内容

答案 1 :(得分:0)

使用array_values

获取数组中的值

创建一个新数组并循环遍历array_values并在新数组中设置你的     custom_key =>价值对

答案 2 :(得分:0)

$counter = 0;
foreach ($array as $key => $values) {
  if ($key != 'document_file_name_' . $counter) { // If by coincidence this one is correct already, no need to rename/delete the original
    $array['document_file_name_' . $counter] = $array[$key];
    unset($array[$key]);
  }
  $counter++;
}

答案 3 :(得分:0)

我知道最好的(根据OP)问题被选中,但我仍然急于说你可以使用几乎每个PHP循环:

@RubenSerrate

foreach()

$newArray=array();
$fileNum=0;
foreach ($originalArray as $file) {
    $newArray["document_file_name".$fileNum++]=$file;
}

for() phpfiddle

$newArr = array();
$length = count($_FILES);
for ($i=0; $i<$length; $i++) {
    $newArr["document_file_name_".$i] = array_shift($_FILES);
}

<强> while()

$newArr = array();
$i=0;
while ($_FILES) {
    $newArr["document_file_name_".$i] = array_shift($_FILES);
    $i++;
}

+所有其他示例+所有其他未提及的方法。

学习PHP并祝你好运!