Php 更改键';数组中的名称
因此,有一个如下所示的数组:Php 更改键';数组中的名称,php,arrays,key,unset,Php,Arrays,Key,Unset,因此,有一个如下所示的数组: $input = [ 'first_name' => 'Alex', 'last_name' => 'UFO', 'email' => 'test@test.com', 'phone_number' => '124124', // ..... 'referral_first_name' => 'Jason', 'referral_last_name'
$input = [
'first_name' => 'Alex',
'last_name' => 'UFO',
'email' => 'test@test.com',
'phone_number' => '124124',
// .....
'referral_first_name' => 'Jason',
'referral_last_name' => 'McNugget',
'referral_email' => 'jingleball@nuggets.com',
'referral_phone_number' => '1212415',
];
在处理第一部分之后,直到转诊…
,您是否认为有更好的方法将转诊\u first\u name
替换为first\u name
等等,然后执行以下操作?也许是一种更加动态和自动的方式
$input['first_name'] = $input['referral_first_name'];
unset($input['referral_first_name']);
$input['last_name'] = $input['referral_last_name'];
unset($input['referral_last_name']);
$input['email'] = $input['referral_email'];
unset($input['referral_email']);
$input['phone_number'] = $input['referral_phone_number'];
unset($input['referral_phone_number']);
伙计们,我忘了提一下,但我已经用
foreach
完成了,但问题是当数组变得相当大时(通常情况下,不是由一个人使用该函数,而是由许多人使用),这意味着额外的不必要的处理时间,因为它必须遍历整个数组,在到达引用部分之前。
重新创建数组是唯一的方法。。
- 从原始数组中获取所有密钥并将其放入临时数组中
- 使用
修改临时数组,将array\u walk
字添加到临时数组中reference
- 现在使用
,使用上述键和旧数组中的值array\u组合
代码。。 因为您在寻找性能,所以请使用典型的
foreach
重新创建阵列是唯一的方法。。
- 从原始数组中获取所有密钥并将其放入临时数组中
- 使用
修改临时数组,将array\u walk
字添加到临时数组中reference
- 现在使用
,使用上述键和旧数组中的值array\u组合
代码。。 因为您在寻找性能,所以请使用典型的
foreach
重新创建阵列是唯一的方法。。
- 从原始数组中获取所有密钥并将其放入临时数组中
- 使用
修改临时数组,将array\u walk
字添加到临时数组中reference
- 现在使用
,使用上述键和旧数组中的值array\u组合
代码。。 因为您在寻找性能,所以请使用典型的
foreach
重新创建阵列是唯一的方法。。
- 从原始数组中获取所有密钥并将其放入临时数组中
- 使用
修改临时数组,将array\u walk
字添加到临时数组中reference
- 现在使用
,使用上述键和旧数组中的值array\u组合
代码。。 因为您在寻找性能,所以请使用典型的
foreach
像这样的怎么样:
$replace = array('first_name', 'last_name', 'email');
foreach($replace AS $key) {
$input[$key] = $input['referral_' . $key];
unset($input[$input['referral_' .$key]]);
}
像这样的怎么样:
$replace = array('first_name', 'last_name', 'email');
foreach($replace AS $key) {
$input[$key] = $input['referral_' . $key];
unset($input[$input['referral_' .$key]]);
}
像这样的怎么样:
$replace = array('first_name', 'last_name', 'email');
foreach($replace AS $key) {
$input[$key] = $input['referral_' . $key];
unset($input[$input['referral_' .$key]]);
}
像这样的怎么样:
$replace = array('first_name', 'last_name', 'email');
foreach($replace AS $key) {
$input[$key] = $input['referral_' . $key];
unset($input[$input['referral_' .$key]]);
}
试试下面的一个
$input = [
//'first_name' => 'Alex',
// 'last_name' => 'UFO',
// 'email' => 'test@test.com',
//'phone_number' => '124124',
// .....
'referral_first_name' => 'Jason',
'referral_last_name' => 'McNugget',
'referral_email' => 'jingleball@nuggets.com',
'referral_phone_number' => '1212415',
];
foreach ($input as $key=>$value){
$refereal_pos = strpos($key, 'referral_');
if($refereal_pos !== FALSE && $refereal_pos == 0){
$input[str_replace('referral_', '', $key)] = $value;
unset($input[$key]);
}
}
print_r($input);
试试下面的一个
$input = [
//'first_name' => 'Alex',
// 'last_name' => 'UFO',
// 'email' => 'test@test.com',
//'phone_number' => '124124',
// .....
'referral_first_name' => 'Jason',
'referral_last_name' => 'McNugget',
'referral_email' => 'jingleball@nuggets.com',
'referral_phone_number' => '1212415',
];
foreach ($input as $key=>$value){
$refereal_pos = strpos($key, 'referral_');
if($refereal_pos !== FALSE && $refereal_pos == 0){
$input[str_replace('referral_', '', $key)] = $value;
unset($input[$key]);
}
}
print_r($input);
试试下面的一个
$input = [
//'first_name' => 'Alex',
// 'last_name' => 'UFO',
// 'email' => 'test@test.com',
//'phone_number' => '124124',
// .....
'referral_first_name' => 'Jason',
'referral_last_name' => 'McNugget',
'referral_email' => 'jingleball@nuggets.com',
'referral_phone_number' => '1212415',
];
foreach ($input as $key=>$value){
$refereal_pos = strpos($key, 'referral_');
if($refereal_pos !== FALSE && $refereal_pos == 0){
$input[str_replace('referral_', '', $key)] = $value;
unset($input[$key]);
}
}
print_r($input);
试试下面的一个
$input = [
//'first_name' => 'Alex',
// 'last_name' => 'UFO',
// 'email' => 'test@test.com',
//'phone_number' => '124124',
// .....
'referral_first_name' => 'Jason',
'referral_last_name' => 'McNugget',
'referral_email' => 'jingleball@nuggets.com',
'referral_phone_number' => '1212415',
];
foreach ($input as $key=>$value){
$refereal_pos = strpos($key, 'referral_');
if($refereal_pos !== FALSE && $refereal_pos == 0){
$input[str_replace('referral_', '', $key)] = $value;
unset($input[$key]);
}
}
print_r($input);
您必须创建另一个数组,此代码应动态执行此操作:
$newInput = array();
foreach($input as $key => $element){
$newKey = explode("_", $key, 2);
$newInput[$newKey[1]] = $element;
}
输出
希望这有帮助:-)您必须创建另一个数组,此代码应动态执行此操作:
$newInput = array();
foreach($input as $key => $element){
$newKey = explode("_", $key, 2);
$newInput[$newKey[1]] = $element;
}
输出
希望这有帮助:-)您必须创建另一个数组,此代码应动态执行此操作:
$newInput = array();
foreach($input as $key => $element){
$newKey = explode("_", $key, 2);
$newInput[$newKey[1]] = $element;
}
输出
希望这有帮助:-)您必须创建另一个数组,此代码应动态执行此操作:
$newInput = array();
foreach($input as $key => $element){
$newKey = explode("_", $key, 2);
$newInput[$newKey[1]] = $element;
}
输出
希望这对您有所帮助:-)您可以使用以下命令:
function changeKeys($input) {
$keys = array_keys($input);
foreach($keys as $key) {
if (strpos($key, "referral_") !== false) {
$tempKey = explode("referral_", $key);
$input[$tempKey[1]] = $input[$key];
unset($input[$key]);
}
}
return $input;
}
changeKeys($input);
这是一个工作演示:
Array
(
[referral_first_name] => Alex
[referral_last_name] => UFO
[referral_email] => test@test.com
[referral_phone_number] => 124124
)
注意:请确保,在删除“参考”后,由于重复密钥而覆盖了您的密钥您可以使用以下命令:
function changeKeys($input) {
$keys = array_keys($input);
foreach($keys as $key) {
if (strpos($key, "referral_") !== false) {
$tempKey = explode("referral_", $key);
$input[$tempKey[1]] = $input[$key];
unset($input[$key]);
}
}
return $input;
}
changeKeys($input);
这是一个工作演示:
Array
(
[referral_first_name] => Alex
[referral_last_name] => UFO
[referral_email] => test@test.com
[referral_phone_number] => 124124
)
注意:请确保,在删除“参考”后,由于重复密钥而覆盖了您的密钥您可以使用以下命令:
function changeKeys($input) {
$keys = array_keys($input);
foreach($keys as $key) {
if (strpos($key, "referral_") !== false) {
$tempKey = explode("referral_", $key);
$input[$tempKey[1]] = $input[$key];
unset($input[$key]);
}
}
return $input;
}
changeKeys($input);
这是一个工作演示:
Array
(
[referral_first_name] => Alex
[referral_last_name] => UFO
[referral_email] => test@test.com
[referral_phone_number] => 124124
)
注意:请确保,在删除“参考”后,由于重复密钥而覆盖了您的密钥您可以使用以下命令:
function changeKeys($input) {
$keys = array_keys($input);
foreach($keys as $key) {
if (strpos($key, "referral_") !== false) {
$tempKey = explode("referral_", $key);
$input[$tempKey[1]] = $input[$key];
unset($input[$key]);
}
}
return $input;
}
changeKeys($input);
这是一个工作演示:
Array
(
[referral_first_name] => Alex
[referral_last_name] => UFO
[referral_email] => test@test.com
[referral_phone_number] => 124124
)
注意:请确保,在删除“参考”后,由于重复的密钥而覆盖了您的密钥除了在创建数组时这样做之外,没有其他方法。删除
参考
后,您的密钥被复制并覆盖。小心点。您可以看到我的答案,这里没有其他方法,除了在创建数组时这样做。删除reference\uuu
后,您的密钥将被复制和重写。小心点。您可以看到我的答案,这里没有其他方法,除了在创建数组时这样做。删除reference\uuu
后,您的密钥将被复制和重写。小心点。您可以看到我的答案,这里没有其他方法,除了在创建数组时这样做。删除reference\uuu
后,您的密钥将被复制和重写。小心点。你可以看到我的答案,他看起来真的很好。我有一个解决方案涉及到使用foreachforeach
,但我并不真正想使用它,因为数组可能会变得相当大。太好了@w0rldart:如果数组相当大,那么您可能希望继续使用foreach
<在大型阵列上执行代码>阵列_walk时速度较慢。另外,与foreach
不同,您不能限制函数(&$v){…}
块内的操作,因为它每次都会执行。@ShankarDamodaran那么我可能根本不使用这些解决方案中的任何一个,因为它们都会增加处理时间,而是使用unset
版本。没想到,array\u walk
会更慢。谢谢你的邀请info@w0rldart,在您的问题编辑中,array\u walk
仍然使用内部循环结构。@ShankarDamodaran Yea,看起来是这样。好吧,现在我将继续使用unset
,但感谢您的解决方案!这看起来真不错。我有一个解决方案涉及到使用foreachforeach
,但我并不真正想使用它,因为数组可能会变得相当大。太好了@w0rldart:如果阵列相当大,那么您可能需要t