获取特定的PHP数组?

时间:2016-01-25 16:21:28

标签: php arrays multidimensional-array

我试图从深度嵌套的PHP数组中获取特定值。我已达到达到我需要的数组并将其存储在变量中。该数组如下所示:

Array ( 
    [0] => Array ( 
        [social_channel] => twitter
        [link] => testing@twitter.com
    )
    [1] => Array (
        [social_channel] => mail
        [link] => hcrosby@testing.edu 
    )
)

此数组通常会包含许多值,例如facebook链接,twitter,Instagram,并且根据用户输入的方式,它们将始终处于不同的顺序。我如何只提取此阵列中的电子邮件地址。我知道这是基本的,但PHP远非我的强项。

5 个答案:

答案 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;
                }
            }    
        } 
    }