PHP-基于另一个参数的值获取多维数组值
假设我有这个数组:PHP-基于另一个参数的值获取多维数组值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,假设我有这个数组: Array ( [0] => Array ( [email] => a@a.com [name] => a ) [1] => Array ( [email] => b@b.com [name] => b ) ) 我使用此代码检查此多数组中是否存在我的电子邮件: i
Array
(
[0] => Array
(
[email] => a@a.com
[name] => a
)
[1] => Array
(
[email] => b@b.com
[name] => b
)
)
我使用此代码检查此多数组中是否存在我的电子邮件:
in_array($user->user_email, array_column($array, 'email'))
现在,我的问题是:如何获取参数“name”的值,其中电子邮件与我的变量匹配。
因此,如果我的$user->user\u电子邮件等于'a@a.com'我需要名称值,即'a'。
在php中可能吗?尝试以下方法:
$index = array_search($user->user_email, array_column($array, 'email'));
if ($index !== false) $name = $array[$index]['name'];
这取决于这样一个事实:我相信,array\u column
创建的运行时数组保留了项目提取的顺序。因此,从该数组读取的索引可用于引用原始数组。尝试以下操作:
$index = array_search($user->user_email, array_column($array, 'email'));
if ($index !== false) $name = $array[$index]['name'];
这取决于这样一个事实:我相信,
array\u column
创建的运行时数组保留了项目提取的顺序。因此,从该数组读取的索引可用于引用原始数组。而不是获取列,然后在该数组中搜索您的电子邮件。你可以这样做。第二个参数定义结果数组的键。此方法减少了在数组中搜索数据的工作量
如果您执行打印($result)
操作,您将得到一个
Array
(
[a@a.com] => a
[b@b.com] => b
)
而不是获取列,然后在该数组中搜索您的电子邮件
。你可以这样做。第二个参数定义结果数组的键。此方法减少了在数组中搜索数据的工作量
如果您执行打印($result)
操作,您将得到一个
Array
(
[a@a.com] => a
[b@b.com] => b
)
使用array\u search
代替数组中的
$array = [
[
'email' => 'a@a.com',
'name' => 'a'
], [
'email' => 'b@b.com',
'name' => 'b'
]
];
$index = array_search('b@bc.com', array_column($array, 'email'));
// when there is no such value, $index will be equal 'false'
var_dump($index); // int(1)
使用array\u search
代替数组中的
$array = [
[
'email' => 'a@a.com',
'name' => 'a'
], [
'email' => 'b@b.com',
'name' => 'b'
]
];
$index = array_search('b@bc.com', array_column($array, 'email'));
// when there is no such value, $index will be equal 'false'
var_dump($index); // int(1)
试试这个
$name = $array[array_keys(array_column($array, 'email'), $user->user_email)[0]]['name'];
PD:(此代码仅获取搜索的第一个元素)试试这个
$name = $array[array_keys(array_column($array, 'email'), $user->user_email)[0]]['name'];
PD:(此代码仅获取搜索的第一个元素)此任务在效率方面的目标是以最少的迭代次数执行数组搜索,并确保数组的迭代次数不可能超过一次(这是n
中的一个大O)
本页上的任何答案,如果在开始搜索之前就使用array\u column()
最有效的技术是迭代数组,目的是使用早期的中断
array_search()
在引擎盖下使用了提前中断,但不幸的是,它需要先调整数据结构
使用任何函数迭代器都不能使用提前中断,因此它们也可以被打折
这是经典循环最合适的一次。使用条件中断,代码段的迭代次数永远不会超过查找匹配项所需的次数
代码:()
输出:
'a'
这项任务在效率方面的目标是以最少的迭代次数执行数组搜索,并确保数组的迭代次数不可能超过一次(这是n
中的一个大O)
本页上的任何答案,如果在开始搜索之前就使用array\u column()
最有效的技术是迭代数组,目的是使用早期的中断
array_search()
在引擎盖下使用了提前中断,但不幸的是,它需要先调整数据结构
使用任何函数迭代器都不能使用提前中断,因此它们也可以被打折
这是经典循环最合适的一次。使用条件中断,代码段的迭代次数永远不会超过查找匹配项所需的次数
代码:()
输出:
'a'
$name=$value['name']代码>更快更清晰。您还可以设置一个中断代码>在它之后。$name=$value['name']代码>更快更清晰。您还可以设置一个中断代码>在它之后。这个答案有一个大O的2n
。这个答案有一个大O的2n
。