В массиве, таком как ниже, как я мог переименовать «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 ) )
foreach ( $array as $k=>$v ) { $array[$k] ['id'] = $array[$k] ['fee_id']; unset($array[$k]['fee_id']); }
сforeach ( $array as $k=>$v ) { $array[$k] ['id'] = $array[$k] ['fee_id']; unset($array[$k]['fee_id']); }
Это должно работать
Вы можете использовать array_map () для этого.
$myarray = array_map(function($tag) { return array( 'id' => $tag['fee_id'], 'fee_amount' => $tag['fee_amount'], 'year' => $tag['year'] ); }, $myarray);
$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; }
с$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; }
Это должно сработать.
Скопировать текущее значение «fee_id» в новый ключ с именем «id» и отменить предыдущий ключ?
foreach ($array as $arr) { $arr['id'] = $arr['fee_id']; unset($arr['fee_id']); }
сforeach ($array as $arr) { $arr['id'] = $arr['fee_id']; unset($arr['fee_id']); }
Нет такой встроенной функции, которая делает такой тонкий афайк.
Это рабочее решение, я его протестировал.
foreach ($myArray as &$arr) { $arr['id'] = $arr['fee_id']; unset($arr['fee_id']); }
сforeach ($myArray as &$arr) { $arr['id'] = $arr['fee_id']; unset($arr['fee_id']); }
Ниже приведенный ниже фрагмент переименует ассоциативный массив с сохранением порядка (иногда … мы должны). Вы можете заменить значение $ new нового ключа, если вам нужно полностью заменить элемент.
$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;
Converted 0-> feild0, 1-> field1,2-> field2 ….
Это всего лишь один пример, в котором я получаю значение, разделенное запятыми, в строке и преобразовываю его в многомерный массив, а затем используя foreach loop i измененное значение ключа массива
<?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); ?>
с<?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); ?>
Я пытался решить эту проблему на пару часов, используя рекурсивные функции, но, наконец, я понял, что нам вообще не нужна рекурсия. Ниже мой подход.
$search = array('key1','key2','key3'); $replace = array('newkey1','newkey2','newkey3'); $resArray = str_replace($search,$replace,json_encode($array)); $res = json_decode($resArray);
На этом пути мы можем избежать цикла и рекурсии.
Надеюсь, поможет.