我试图从深度嵌套的PHP数组中获取特定值。我已达到达到我需要的数组并将其存储在变量中。该数组如下所示:
Array (
[0] => Array (
[social_channel] => twitter
[link] => testing@twitter.com
)
[1] => Array (
[social_channel] => mail
[link] => hcrosby@testing.edu
)
)
此数组通常会包含许多值,例如facebook链接,twitter,Instagram,并且根据用户输入的方式,它们将始终处于不同的顺序。我如何只提取此阵列中的电子邮件地址。我知道这是基本的,但PHP远非我的强项。
答案 0 :(得分:1)
假设你有以下内容:
$my_array = [
['social_channel' => 'twitter', 'link' => 'testing@twitter.com'],
['social_channel' => 'mail', 'link' => 'hcrosby@testing.edu'],
];
您可以使用foreach循环遍历数组的每个项目,然后使用link
数组键获取电子邮件地址。例如:
foreach ($my_array as $item) {
echo $item['link']; // Or save the item to another array etc.
}
答案 1 :(得分:1)
您可以使用array_map函数
$my_array = [
['social_channel' => 'twitter', 'link' => 'testing@twitter.com'],
['social_channel' => 'mail', 'link' => 'hcrosby@testing.edu'],
];
function getMailArray($array) {
return $array['link'];
}
$result = array_map("getMailArray",$my_array);
答案 2 :(得分:0)
试试这个:
$arr1 = array(array('social_channel' => 'twitter', 'link' => 'testing@twitter.com'),
array('social_channel' => 'mail', 'link' => 'hcrosby@testing.edu'));
$emailArr = array();
foreach ($arr1 AS $arr) {
$emailArr[] = $arr['link'];
}
print_r($emailArr);
答案 3 :(得分:0)
$assoc = [];
foreach($array as $sub){
$assoc[$sub["social_channel"]] = $assoc["link"];
}
以上内容将social_channel
更改为一个键,以便您可以直接搜索:
$email = $assoc["email"];
请务必确保输入中包含email
字段,以避免error.log
不必要地发送垃圾邮件。
答案 4 :(得分:0)
<?php
function retrieveValueFromNestedList(array $nestedList, $expectedKey)
{
$result = null;
foreach($nestedList as $key => $value) {
if($key === $expectedKey) {
$result = $value;
break;
} elseif (is_array($value)){
$result = $this->retrieveValueFromNestedList($value, $expectedKey);
if($result) {
break;
}
}
}
}