0

テキストエリアからエントリを取得し、それを行に分割し、各行からデータの配列を作成する関数があります。ただし、これは数値配列であり、データには特定のキーが関連付けられている必要があります。

各キーを手動でコーディングするのを避けるために、これらのキーを希望の位置に挿入できる機能はありますか?

これが私のコードで、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;

}

電流出力(1系統分) -

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

希望出力(1行分) -

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

3 に答える 3

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
于 2013-07-29T10:58:01.563 に答える
2

これはあなたの役に立ちます、

$key=array("email","first_name","surname","custom");
$parts = explode(',', $line); 
$parts = array_slice($parts, 0, 4);
$invites[] = array_combine($key,$parts);
于 2013-07-29T12:39:48.827 に答える
1

ここでの答えは、使用することですarray_combine($keys, $values);

$keys$values配列の要素数が異なる場合、関数は失敗することに注意してください。

于 2013-07-29T10:53:06.120 に答える