Подтвердить что ты не робот

PHP переименовывает ключи массива в многомерном массиве

В массиве, таком как ниже, как я могу переименовать "fee_id" в "id"?

Array
(
    [0] => Array
        (
            [fee_id] => 15
            [fee_amount] => 308.5
            [year] => 2009                
        )

    [1] => Array
        (
            [fee_id] => 14
            [fee_amount] => 308.5
            [year] => 2009

        )

)
4b9b3361

Ответ 1

foreach ( $array as $k=>$v )
{
  $array[$k] ['id'] = $array[$k] ['fee_id'];
  unset($array[$k]['fee_id']);
}

Это должно работать

Ответ 2

Вы можете использовать array_map() для этого.

$myarray = array_map(function($tag) {
    return array(
        'id' => $tag['fee_id'],
        'fee_amount' => $tag['fee_amount'],
        'year' => $tag['year']
    ); }, $myarray);

Ответ 3

$arrayNum = count($theArray);

for( $i = 0 ; $i < $arrayNum ; $i++ )
{
    $fee_id_value = $theArray[$i]['fee_id'];
    unset($theArray[$i]['fee_id']);
    $theArray[$i]['id'] = $fee_id_value;
}

Это должно работать.

Ответ 4

Скопировать текущее значение "fee_id" в новый ключ с именем "id" и отключить предыдущий ключ?

foreach ($array as $arr)
{
  $arr['id'] = $arr['fee_id'];
  unset($arr['fee_id']);
}

Нет встроенной функции, создающей такой тонкий afaik.

Ответ 5

Это рабочее решение, я его протестировал.

foreach ($myArray as &$arr) {
    $arr['id'] = $arr['fee_id'];
    unset($arr['fee_id']);
}

Ответ 6

Ниже приведенный ниже фрагмент переименует ассоциативный массив с сохранением порядка (иногда... мы должны). Вы можете заменить новое значение ключа $, если вам нужно полностью заменить элемент.

$old_key = "key_to_replace";
$new_key = "my_new_key";

$intermediate_array = array();
while (list($key, $value) = each($original_array)) {
  if ($key == $old_key) {
    $intermediate_array[$new_key] = $value;
  }
  else {
    $intermediate_array[$key] = $value;
  }
}
$original_array = $intermediate_array;

Ответ 7

Преобразованный 0- > feild0, 1- > field1,2- > field2....

Это только один пример, в котором я получаю значение в запятой в строке и преобразовываю его в многомерный массив, а затем используя цикл foreach я измененное значение ключа массива

<?php

    $str = "abc,def,ghi,jkl,mno,pqr,stu 
    abc,def,ghi,jkl,mno,pqr,stu
    abc,def,ghi,jkl,mno,pqr,stu
    abc,def,ghi,jkl,mno,pqr,stu;

    echo '<pre>';
    $arr1 = explode("\n", $str); // this will create multidimensional array from upper string
    //print_r($arr1);
    foreach ($arr1 as $key => $value) {
        $arr2[] = explode(",", $value);
        foreach ($arr2 as $key1 => $value1) {
            $i =0;
            foreach ($value1 as $key2 => $value2) { 
                $key3 = 'field'.$i;
                $i++;
                $value1[$key3] = $value2;
                unset($value1[$key2]);           
            }
        }
        $arr3[] = $value1;
    }
    print_r($arr3);


   ?>

Ответ 8

Я пытаюсь решить эту проблему на пару часов, используя рекурсивные функции, но, наконец, я понял, что нам вообще не нужна рекурсия. Ниже мой подход.

$search = array('key1','key2','key3');
$replace = array('newkey1','newkey2','newkey3');

$resArray = str_replace($search,$replace,json_encode($array));
$res = json_decode($resArray);

Таким образом, мы можем избежать цикла и рекурсии.

Надеюсь, что это поможет.