如何访问PHP中array_filter过滤后数组的id、key、value字段?
访问array_filter过滤后数组的字段
你用array_filter过滤数组后,得到的结果会保留原数组的键名,所以返回的$start是一个带原键(比如你的例子里的"1")的关联数组,直接按索引访问会有问题,下面是几种可行的访问方式:
方式一:转为索引数组后取第一个元素
用array_values()将关联数组转为索引数组,再取索引0的元素:
$start = array_filter($array, function ($var) { return ($var['key'] == 'emails_html_body_start'); }); // 转为索引数组并获取第一个匹配项 $item = array_values($start)[0]; // 访问字段 echo $item['id']; // 输出:3 echo $item['key']; // 输出:emails_html_body_start echo $item['value']; // 输出:value
或者用reset()函数直接获取数组的第一个元素:
$item = reset($start);
方式二:遍历过滤结果
如果不确定匹配项的数量,或者需要处理多个匹配结果,直接遍历数组即可:
$start = array_filter($array, function ($var) { return ($var['key'] == 'emails_html_body_start'); }); foreach ($start as $item) { echo $item['id']; echo $item['key']; echo $item['value']; }
方式三:直接通过原键访问(不推荐)
如果你明确知道过滤后结果的键名(比如例子里的"1"),也可以直接用键名访问,但这种方式不灵活,原数组键变化后会失效:
echo $start['1']['id'];
内容的提问来源于stack exchange,提问作者Filip Vnenčák
相关产品推荐
相关产品推荐

