2017-02-15 63 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] 
相關問題