向现有数组添加键和值

4

我需要向现有数组添加键和值,但似乎无法做到。

当打印时,我的现有数组看起来像这样:

Array
(
    [0] => stdClass Object
        (
            [id] => 787
            [name] => Steve
            [surname] => Ryan
            [email] => Steve@hotmail.com
        )

    [1] => stdClass Object
        (
            [id] => 1057
            [name] => Peter
            [surname] => Smith
            [email] => Peter.Smith@yahoo.com
        )

    [2] => stdClass Object
        (
            [id] => 1058
            [name] => Chris
            [surname] => Gill
            [email] => chrisgill@gmail.com
        )

)

我需要在运行时从一个类似于这样的字符串中添加一些细节到这个数组中:string
Topher:Topher1234@mac.com
Elvis:elvispresley@gmail.com
Marilyn:marilyn.monroe@hotmail.com

每个条目都由一个新行分隔,并且名称和电子邮件地址由:分隔。
因此,最终我的数组将如下所示:
Array
(
    [0] => stdClass Object
        (
            [id] => 787
            [name] => Steve
            [surname] => Ryan
            [email] => Steve@hotmail.com
        )

    [1] => stdClass Object
        (
            [id] => 1057
            [name] => Peter
            [surname] => Smith
            [email] => Peter.Smith@yahoo.com
        )

    [2] => stdClass Object
        (
            [id] => 1058
            [name] => Chris
            [surname] => James
            [email] => chrisjames@gmail.com
        )
    [3] => stdClass Object
        (
            [id] => 
            [name] => Topher
            [surname] => 
            [email] => Topher1234@mac.com
        )
    [4] => stdClass Object
        (
            [id] => 
            [name] => Elvis
            [surname] => 
            [email] => elvispresley@gmail.com
        )
    [5] => stdClass Object
        (
            [id] => 
            [name] => Marilyn
            [surname] => 
            [email] => marilyn.monroe@hotmail.com
        )

)

我查看了array_push但是无法理解。

非常感谢任何对此的帮助。

C


2
展示一下你尝试过的内容。数组推送可以使用array_push函数或者直接使用$array['key'] = $value - Erik
你可能正在寻找 $myarray[] = $appendedValue;这相当于 JavaScript 的 myarray.push(appendedValue); - Hunter Fernandes
谢谢 @HunterF,我现在会检查一下。 - Cybercampbell
3个回答

3
你可以尝试这样做:

您可以尝试类似以下方式:

$string = "Topher:Topher1234@mac.com\nElvis:elvispresley@gmail.com\nMarilyn:marilyn.monroe@hotmail.com";
$string = explode("\n", $string);
$result = array(); # or your existing array
foreach($string as $chunk){
        $to_array = new stdClass();
        $to_array->id = null;
        $to_array->surname = null;
        list($to_array->name, $to_array->email) = explode(':', $chunk);
        $result[] = $to_array;
}
print_r($result);

Codepad示例

结果:

Array
(
    [0] => stdClass Object
        (
            [id] => 
            [surname] => 
            [email] => Topher1234@mac.com
            [name] => Topher
        )

    [1] => stdClass Object
        (
            [id] => 
            [surname] => 
            [email] => elvispresley@gmail.com
            [name] => Elvis
        )

    [2] => stdClass Object
        (
            [id] => 
            [surname] => 
            [email] => marilyn.monroe@hotmail.com
            [name] => Marilyn
        )

)

2
使用PHP数组的[]操作符与将值推送到数组末尾相同。
$arr[] = 'new element in array';

您需要的完整解决方案如下:
$CharacterInput = <<<EOT
Topher:Topher1234@mac.com
Elvis:elvispresley@gmail.com
Marilyn:marilyn.monroe@hotmail.com
EOT;

$lines = explode("\n", $CharacterInput);

$People = array();

foreach($lines as $line) {
    list($name, $email) = explode(':', $line);

    $entry = array(
        'id' => null,
        'name' => $name,
        'surname' => null,
        'email' => $email,
    );

    // cast the entered data array to an object,
    // which is explicitly stated in the example output.
    // For plain arrays, remove the following line.
    $entry = (object) $entry;

    $People[] = $entry;
}

print_r($People);

输出

Array
(
 [0] => stdClass Object
 (
 [id] => 
 [name] => Topher
 [surname] => 
 [email] => Topher1234@mac.com
 )

 [1] => stdClass Object
 (
 [id] => 
 [name] => Elvis
 [surname] => 
 [email] => elvispresley@gmail.com
 )

 [2] => stdClass Object
 (
 [id] => 
 [name] => Marilyn
 [surname] => 
 [email] => marilyn.monroe@hotmail.com
 )

)

-2
假设$arr是您现有的数组变量,请按照以下方式操作。
$arr[] =  array(
            ['id'] => '',
            ['name'] => 'Topher',
            ['surname'] => '',
            ['email'] => 'Topher1234@mac.com'
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接