为具有数字键的数组指定键名


Give key names to an array with numerical keys

我有一个函数,它从文本区域获取一个条目,将其拆分为行,并从每行中生成一个数据数组。然而,这是一个数字数组,数据需要有与之相关的特定密钥

有没有一个功能可以将这些键插入我想要的位置,以避免手动对每个键进行编码?

这是我的代码,它生成一个4元素数组-

function do_split_invitations(){
    /** Split the lines into individual elements in an array */
    $lines = explode("'n", $_POST['invitations']);
    $invites = array(); // Initiate array to avoid errors
    if(!empty($lines)) : foreach($lines as $line) :
            $parts = explode(',', $line); // Split in to parts
            $parts = array_slice($parts, 0, 4); // Take only the first 4 parts (the rest are not needed
            $parts = array_map(array($this, '_clean_callback'), $parts); // Clean the parts
            $invites[] = $parts;
        endforeach;
    endif;
}

电流输出(一条线路)-

Array
(
    [0] => test@adomain.com
    [1] => John
    [2] => Smith
    [3] => Mr Smith
)

所需输出(一行)-

Array
(
    ['email'] => test@adomain.com
    ['first_name'] => John
    ['surname'] => Smith
    ['custom'] => Mr Smith
)

阵列组合对有帮助

例如

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
?>

编辑

试试你的前臂。我正在写一个基本的结构。

foreach ($Offer as $key => $value) { 
  $offerArray[$key] = $value[4];
}

类似此格式的输出

key => value
key => value

,这将对您有所帮助

$key=array("email","first_name","surname","custom");
$parts = explode(',', $line); 
$parts = array_slice($parts, 0, 4);
$invites[] = array_combine($key,$parts);

这里的答案是使用array_combine($keys, $values);

请注意,如果$keys$values阵列中的元素数量不同,则函数将失败。