[英]add key and value to an existing array
我需要為現有數組添加鍵和值,似乎無法將它們組合在一起。
打印時我現有的數組如下所示:
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
每個條目都由一個new line
分隔,名稱和電子郵件地址由以下部分分隔:
所以最后我的數組看起來像這樣:
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
你可以嘗試這樣的事情
$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);
結果:
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
)
)
使用PHP Arrays'[]運算符與將值推送到數組末尾相同。
$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
)
)
假設$ arr是您現有的數組變量,請按照下面的說明執行。
$arr[] = array(
['id'] => '',
['name'] => 'Topher',
['surname'] => '',
['email'] => 'Topher1234@mac.com'
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.