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
后,您的密钥将被复制和重写。小心点。你可以看到我的答案,他看起来真的很好。我有一个解决方案涉及到使用foreach
foreach
,但我并不真正想使用它,因为数组可能会变得相当大。太好了@w0rldart:如果数组相当大,那么您可能希望继续使用
foreach
<在大型阵列上执行代码>阵列_walk时速度较慢。另外,与
foreach
不同,您不能限制
函数(&$v){…}
块内的操作,因为它每次都会执行。@ShankarDamodaran那么我可能根本不使用这些解决方案中的任何一个,因为它们都会增加处理时间,而是使用
unset
版本。没想到,
array\u walk
会更慢。谢谢你的邀请info@w0rldart,在您的问题编辑中,
array\u walk
仍然使用内部循环结构。@ShankarDamodaran Yea,看起来是这样。好吧,现在我将继续使用
unset
,但感谢您的解决方案!这看起来真不错。我有一个解决方案涉及到使用foreach
foreach
,但我并不真正想使用它,因为数组可能会变得相当大。太好了@w0rldart:如果阵列相当大,那么您可能需要t