请在下面找到我的数组
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
//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
它似乎只回显第一个数组中的电子邮件地址。
答案 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/737875或https://eval.in/737876或https://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