2017-02-15 38 views
1

特定键请找我的数组如何找到一个PHP数组

Array ( 
[0] => Array ( 
    [id] => 0 
    [country] => GB 
    [note] => [email protected] 
    [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]键的值,这样我就可以将它带到我的下一个函数中。

UPDATE:为了让我的下一个功能我用下面的代码获取来自同一阵列的电子邮件地址(键 - >注)为$storename

//Get the email address of the storename      
$key = array_search($storename, array_column($option,'company')); 
echo $option[$key]['note']; 

但是上班,我现在得到以下。

STORENAME:阿伯丁Debenhams的 电子邮件:[email protected]

STORENAME:巴塞尔顿Debenhams的 电子邮件:[email protected]

这似乎是呼应从电子邮件地址仅限第一个数组。

+0

echo $ key = array_search($ storename,$ option); –

+0

谢谢@Amit,但没有给我提示键,也没有提供任何其他键。我需要在$ storename的同一个数组中获得note key的值。 –

回答

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/737876或者https://eval.in/737899

注: -

该解决方案将在的情况下工作,数字索引数组,而不是关联数组。

使用if ($key !== false) { echo ... }通过@Kodos约翰逊

+0

对不起,我把你的名字写错了。我做了一个更新,你的代码正在工作,但它只能从数组中获得第一个[注释]。 –

+0

@AlexKnopp它也适用于您的更新问题,请点击此处: - https://eval.in/737899($商品名需要更改,否则始终得到相同的值) –

+0

@AlexKnopp您应该确保'$ key'是在使用之前不要“假”。所以'if($ key!== false){echo ...}'。这是因为如果未找到该值,'array_search'返回'false',并且当使用'false'作为数组的键时,它将假定为0,这是数组的第一个元素。 –

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']; //[email protected] 
相关问题