使用数字键为数组指定键名

时间:2013-07-29 10:53:06

标签: php arrays

我有一个函数从textarea获取一个条目,将它分成行并从每一行创建一个数据数组。但是,这是一个数值数组,数据需要具有与之关联的特定键。

是否有可以将这些键插入我想要的位置的功能,以避免手动编码每个键?

这是我的代码,它生成一个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
)

3 个答案:

答案 0 :(得分:2)

数组合并对你有帮助

例如。

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

print_r($c);
?>

修改

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

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

以此格式输出

key => value
key => value

答案 1 :(得分:2)

这对你有帮助,

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

答案 2 :(得分:1)

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

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