如何在PHP数组中查找特定键

时间:2017-02-15 19:41:20

标签: php

请在下面找到我的数组

Array ( 
[0] => Array ( 
    [id] => 0 
    [country] => GB 
    [note] => coda@knoppys.co.uk 
    [cost] => 
    [company] => Aberdeen Debenhams 
    [address_1] => 
    [address_2] => Trinity Centre 
    [city] => 
    [state] => 
    [postcode] => AB11 6BD 
    [phone] => 01224 578553 
) 
[1] => Array ( 
    [id] => 1 
    [country] => GB 
    [note] => 
    [cost] => 
    [company] => Basildon Debenhams 
    [address_1] => 
    [address_2] => The Eastgate Centre 
    [city] => 
    [state] => 
    [postcode] => SS14 1HR 
    [phone] => 01268 244456 
)
)

数组作为单个WordPress选项存储在数据库中作为序列化数组。

我有一个字符串:

$storename = 'Aberdeen Debenhams';

我有一个函数用于搜索多维数组中的字符串。

if(search_array($storename, $option)) {
    echo 'true';
}

现在这个很好,很好。 $storename是动态的,来自之前的函数。我需要做的是能够在同一个数组中获取[note]键的值,以便我可以将其带到我的下一个函数中。

更新:为了让我的下一个功能正常工作,我使用以下代码从与$storename

相同的数组中获取电子邮件地址(key-> note)
//Get the email address of the storename                    
$key = array_search($storename, array_column($option,'company'));
echo $option[$key]['note'];

但是,我现在得到以下内容。

商店名称:Aberdeen Debenhams 电子邮件:coda@knoppys.co.uk

商店名称:Basildon Debenhams 电子邮件:coda@knoppys.co.uk

它似乎只回显第一个数组中的电子邮件地址。

2 个答案:

答案 0 :(得分:2)

使用aray_search()array_column(): -

echo $key = array_search($storename, array_column($option,'company'));

echo PHP_EOL;

echo $option[$key]['note'];

输出: - https://eval.in/737875https://eval.in/737876https://eval.in/737899

注意: -

此解决方案适用于数字索引数组,而不是关联数组。

使用@Kodos Johnson建议的if ($key !== false) { echo ... }

答案 1 :(得分:1)

您可以通过迭代解决问题,如下所示,如果您有一系列公司,则可以设置foreach()来迭代大foreach()中的公司。

foreach(array as arr){

   $aberdeen=new array();
   $basildon= new array();

   if(arr['company']=="Aberdeen Debenhams")
      $aberdeen = $arr;


    if(arr['company']=="Basildon Debenhams")
      $basildon = $arr;
 }

$basildon['note']; //(empty)
$aberden['note'];  //coda@knoppys.co.uk